为了账号安全,请及时绑定邮箱和手机立即绑定

2个列表之间的共同元素比较

2个列表之间的共同元素比较

富国沪深 2019-11-11 10:51:30
def common_elements(list1, list2):    """    Return a list containing the elements which are in both list1 and list2    >>> common_elements([1,2,3,4,5,6], [3,5,7,9])    [3, 5]    >>> common_elements(['this','this','n','that'],['this','not','that','that'])    ['this', 'that']    """    for element in list1:        if element in list2:            return list(element)到现在为止,但是似乎无法正常工作!有任何想法吗?
查看完整描述

3 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

>>> list1 = [1,2,3,4,5,6]

>>> list2 = [3, 5, 7, 9]

>>> list(set(list1).intersection(list2))

[3, 5]


查看完整回答
反对 回复 2019-11-11
?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

您还可以使用集合并在一行中获得共性:从其中一个集合中减去包含差异的集合。


A = [1,2,3,4]

B = [2,4,7,8]

commonalities = set(A) - (set(A) - set(B))


查看完整回答
反对 回复 2019-11-11
?
HUH函数

TA贡献1836条经验 获得超4个赞

所建议的解决方案S.Mark和SilentGhost通常告诉你应该如何在一个Python化的方式来完成,但我认为从知道为什么你的解决方案不工作,你也可能受益。问题在于,一旦您在两个列表中找到第一个公共元素,就只返回该单个元素。您可以通过创建一个result列表并收集该列表中的常见元素来解决您的问题:


def common_elements(list1, list2):

    result = []

    for element in list1:

        if element in list2:

            result.append(element)

    return result

使用列表推导的更短版本:


def common_elements(list1, list2):

    return [element for element in list1 if element in list2]

但是,正如我说的那样,这是一种非常低效的方式-Python的内置集合类型在内部用C实现时效率更高。


查看完整回答
反对 回复 2019-11-11
  • 3 回答
  • 0 关注
  • 433 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信