Python - 在n个列表中找到一个单词(不知道有多少个)

时间:2014-12-10 20:04:31

标签: python algorithm list for-loop

作为标题(我在网站上搜索但未找到答案)我必须在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个列表。

3 个答案:

答案 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']