说我有一个这样的嵌套列表,例如:
List = [['a','d','b'],['a','x','w','t','d'],['g','c','d','z']]
我想要做的是在列表中找到所有较小列表共享的对象,因此对于示例列表,我给出了' d'将是他们共享的对象。
这是我到目前为止所做的事情:
def related(List):
for item in List[0]:
for i in range(1, len(List)):
if item in List[i]:
return item
我遇到的问题是当我这样做时:
related([['a','d','b'],['a','x','w','t','d'],['g','c','d','z']])
'一个'退回,但这不是正确答案,因为' a'不在所有列表中,只在前2个列表中。该列表的正确答案应该是'
。我的功能基本上只是在一个列表中找到相同的对象时停止运行。
有人能够让我走上正确的道路,我可以做些什么来让我的代码正常工作?谢谢!!!
答案 0 :(得分:3)
您在这里寻找的是这些列表的交集。 Python列表没有内置的交集功能,但是set
可以。我们可以做到
def in_common(l):
if not l:
return set()
return set(l[0]).intersection(*l[1:])
这将第一个元素转换为set
,然后找到该集合与列表中其余元素的交集。
in_common([['a','d','b'],['a','x','w','t','d'],['g','c','d','z']])
返回
{'d'}
包含set
'd'