说我有一个这样的嵌套列表,例如:
List = [['a','d','b'],['a','x','w','t','d'],['g','c','d','z']]
我想要做的是在 List 中找到所有较小列表共享的对象,因此对于我给出的示例 List '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',但这不是正确答案,因为 'a' 不在所有列表中,而只在前 2 个列表中。该列表的正确答案应该是“d”。
一旦我的函数在其中一个列表中找到相同的对象,它基本上就会停止运行。
有人能把我送到正确的道路上,我可以做些什么来让我的代码正常工作吗?谢谢你!!!
您在这里寻找的是这些列表的交集。Python 列表没有内置的交集功能,但set
s 有。我们可以做的
def in_common(l):
if not l:
return set()
return set(l[0]).intersection(*l[1:])
这会将第一个元素转换为 a set
,然后找到该集合与列表中其余元素的交集。
in_common([['a','d','b'],['a','x','w','t','d'],['g','c','d','z']])
返回
{'d'}
在set
含'd'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句