猿问

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

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)

到现在为止,但是似乎无法正常工作!

有任何想法吗?



富国沪深
浏览 434回答 3
3回答

守着星空守着你

>>> list1 = [1,2,3,4,5,6]>>> list2 = [3, 5, 7, 9]>>> list(set(list1).intersection(list2))[3, 5]

拉风的咖菲猫

您还可以使用集合并在一行中获得共性:从其中一个集合中减去包含差异的集合。A = [1,2,3,4]B = [2,4,7,8]commonalities = set(A) - (set(A) - set(B))

HUH函数

所建议的解决方案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实现时效率更高。
随时随地看视频慕课网APP

相关分类

Python
我要回答