我正在寻找一个迭代器,它在python(或例如列表)中作为输入多个范围,并返回这些的所有可能组合。优选地在迭代器中,因此它不将所有组合存储在存储器中。我知道如何自己编写代码,但在我看来这是一个非常常见的功能,所以我无法想象它在某些库中已经存在。这基本上就是这个想法:
a = range(0,2)
b = range(2,4)
for i,j in someFunc(a,b):
print(i,j)
然后打印:
0 2
0 3
1 2
1 3
这可以通过多个循环来实现:
for i in a:
for j in b:
print(i,j)
但我正在寻找一个可以接受无限范围作为参数的函数。它似乎是一个常见的功能,但我无法在任何地方找到它。
答案 0 :(得分:1)
>>> from itertools import product
>>> list(product(range(0, 2), range(2, 4)))
[(0, 2), (0, 3), (1, 2), (1, 3)]
答案 1 :(得分:1)
itertools.product
做一个catesian产品:
>>> from itertools import product
>>> A = [1, 2 , 3 ]
>>> B = [3, 5, 4 ]
>>> product(A,B)
<itertools.product object at 0x7f4428d75e10>
>>> for i in product(A,B):
... print i
...
(1, 3)
(1, 5)
(1, 4)
(2, 3)
(2, 5)
(2, 4)
(3, 3)
(3, 5)
(3, 4)
>>>