迭代中的多个范围(列表,集等)在python中

时间:2017-08-22 12:44:02

标签: python range iteration

我正在寻找一个迭代器,它在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)

但我正在寻找一个可以接受无限范围作为参数的函数。它似乎是一个常见的功能,但我无法在任何地方找到它。

2 个答案:

答案 0 :(得分:1)

您想要itertools.product()

>>> 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)
>>>