3 回答
TA贡献1799条经验 获得超8个赞
>>> list1 = [1,2,3,4,5,6]
>>> list2 = [3, 5, 7, 9]
>>> list(set(list1).intersection(list2))
[3, 5]
TA贡献1995条经验 获得超2个赞
您还可以使用集合并在一行中获得共性:从其中一个集合中减去包含差异的集合。
A = [1,2,3,4]
B = [2,4,7,8]
commonalities = set(A) - (set(A) - set(B))
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实现时效率更高。
添加回答
举报