如何遍历三个或更多列表,将每个列表与每个元素进行比较?

时间:2019-11-14 12:01:26

标签: python numpy itertools

我有几个列表,每个列表都有一个字典。我需要遍历元素的每种组合,并将它们相互比较。我想得到这样的东西:

arr1 = [1, 2, 3]
arr2 = ['a', 'b', 'c', 'd']
arr3 = [-1, -2]

for a, b in magic_function(arr1, arr2, arr3, ...):  # Probably even more lists!
    print(a, b)

# Output:

(1, 'a')
(1, 'b')
(1, 'c')
(1, 'd')
(2, 'a')
(2, 'b')
(2, 'c')
(2, 'd')
(3, 'a')
(3, 'b')
(3, 'c')
(3, 'd')
('a', -1)
('a', -2)
('b', -1)
('b', -2)
('c', -1)
('c', -2)
('d', -1)
('d', -2)
(1, -1)
(1, -2)
(2, -1)
(2, -2)
(3, -1)
(3, -2)

我可以使用什么功能?我找到了itertools.product(),但这并不是我想要的。我也可以使用numpy。

1 个答案:

答案 0 :(得分:2)

import itertools

arrs = [[1, 2, 3], ['a', 'b', 'c', 'd'], [-1, -2]]
for arr1, arr2 in itertools.combinations(arrs, 2):
    for p in itertools.product(arr1, arr2):
        print(p)