我有任意数量的列表和任意数量的元素。我需要找到排列,以便每个置换包含每个列表中的所有、任何或任何元素。
l1 = ['red', 'blue', 'green']
l2 = ['big','small','medium']
l3 = ['fast','slow','stopped']
res = function([l1,l2,l3])
res = [(['red', 'blue', 'green'], ['big','small','medium'], ['fast','slow','stopped']),
(['red', 'blue'], ['big','small','medium'], ['fast','slow','stopped']),
([],[],['fast'])]我看过任何笛卡儿产品和迭代工具,但我的问题似乎是明显不同的,因为我需要所有的,任何的,或零的,而不仅仅是一组固定元素的每一个组合。
发布于 2022-11-20 04:08:28
我想这是我讨厌的解决方案。
products = []
for r in range(len(l1)+1):
perm = list(itertools.combinations(l1, r))
for r2 in range(len(l2)+1):
perm2 = list(itertools.combinations(l2, r2))
for r3 in range(len(l3)+1):
perm3 = list(itertools.combinations(l3, r3))
for p in perm:
for p2 in perm2:
for p3 in perm3:
products.append((p,p2,p3))https://stackoverflow.com/questions/74505467
复制相似问题