我有N个列表(或集合),N个我不知道。我必须从每个列表访问一个元素以检查条件。
例如,如果
A = [1, 2, 3]
B = [5, 6]
c = [6, 7]
我的组合为 [(1,5,6), (1,5,7), (1,6,6), (1,6, 7), (2, 5, 6) and so on...]
如何有效地做到这一点?
list1 = [(i, j, k) for i in listx for j in listy for k in listz]
为已知的N(此处为3)工作;对于未知N怎么办?
答案 0 :(得分:0)
您完全是在描述笛卡尔积 尝试itertools.product:
from itertools import product
A = [1, 2, 3]
B = [5, 6]
C = [6, 7]
print(list(product(A,B,C)))
答案 1 :(得分:0)
您可以将itertools中的产品用于任意数量的列表:
from itertools import product
lists = [[1, 2, 3], [3,2,1],[2,3],[1,5,4]]
print([*product(*lists)])
# [(1, 3, 2, 1), (1, 3, 2, 5), (1, 3, 2, 4) ...