作为标题(我在网站上搜索但未找到答案)我必须在n
列表中找到一个共同词。
例如,如果我有这些列表:
list1 = ["a", "b", "c"]
list2 = ["d", "e", "a"]
list3 = ["f", "g", "h", "i", "j"]
list1和list2有一个共同点,即“a”...... 显然我也可以有100个列表...但我不知道数字,算法必须始终有效,当然:P
我想到了一个for循环,但我从来没有设法得到具体的东西(在范围内制作num(len(list1)),因为如果列表长度不同则无法做任何事情。
编辑:我道歉也许我解释不好,我没有列表清单。 我正在处理图形,并且在节点的图形信息中,我有一个列表,在cui中我有信息,我需要找到共享公共信息的节点,以便用弓形连接它们。 / p>
在图表中我有n
个节点,根据它生成程序的方式,因此我有n
个列表。
答案 0 :(得分:1)
您可以使用这样的集合交集(如果您有列表列表,则相应地进行修改)
list1 = ["a", "b", "c", "xc"]
list2 = ["d", "e", "to", "xc"]
list3 = ["f", "g", "h", "i", "j", "xc"]
print list(set(list1) & set(list2) & set(list3)) # it will print ['xc']
答案 1 :(得分:0)
编写一个函数,它接受一系列迭代,将它们转换成集合,然后取交集,它返回两个集合共有的元素:
def find_common_words(list_of_lists):
current_set = set(list_of_lists[0])
for l in list_of_lists:
current_set = list_of_lists.intersection(l)
return list(current_set)
答案 2 :(得分:0)
from itertools import combinations
lists = [
["a", "b", "c"],
["d", "e", "a"],
["f", "g", "h", "i", "j"],
["z", "a", "d", "l", "m"]
]
for one, two in combinations(lists, 2):
intersection = list(set(one) & set(two))
if intersection:
print one, two, intersection
输出
['a', 'b', 'c'] ['d', 'e', 'a'] ['a']
['a', 'b', 'c'] ['z', 'a', 'd', 'l', 'm'] ['a']
['d', 'e', 'a'] ['z', 'a', 'd', 'l', 'm'] ['a', 'd']