使用此代码:
from itertools import product
list1 = ['Gabe', 'Taylor', 'Kyle', 'Jay']
list2 = ['Gabe', 'Taylor', 'Kyle', 'Jay', 'James', 'John', 'Tyde','Chris', 'Bruno', 'David']
list3 = ['Gabe', 'Taylor', 'Kyle', 'Jay', 'James', 'John', 'Tyde','Chris', 'Bruno', 'David']
list4 = ['Kyle', 'James', 'John', 'Tyde','Bruno', 'Drew', 'Chris']
list5 = ['James', 'John', 'Brendan','Tim', 'Drew' ]
FinalList = []
for x in product(list1, list2, list3, list4, list5):
# check for duplicates
if len(set(x)) == 5:
FinalList.append(x)
# to print
for x in FinalList:
print x
我打印出所有的单子。然而,许多打印的列表是唯一的,只是因为它们是不同顺序的相同元素。你知道吗
如何更改代码,以便仅打印尚未打印的列表(只是顺序不同)?你知道吗
不必像您那样检查集合的大小,而是将每个集合也存储在一个集合中(这样可以简化查找)。你知道吗
然后检查是否您已经知道
set(x)
;如果知道,请跳过它,否则将其放入已知的集合中。你知道吗要在集合中存储集合,必须使用
frozenset
而不是set
,使内部集合不可变。你知道吗工作代码:
frozenset
是可散列的,不关心其内容的顺序。只需为final_data
使用一个集合而不是一个列表,具有不同顺序的相同名称的条目将合并为final_data
中的一个条目:相关问题 更多 >
编程相关推荐