2016-07-15 20 views

回答

2

列表理解做的:

[(i,j) for i in a for j in b] 

输出:

>>> a = [1, 2] 
>>> b = [3, 4] 
>>> [(i,j) for i in a for j in b] 
[(1, 3), (1, 4), (2, 3), (2, 4)] 
2

您还可以使用itertools.product

list(itertools.product(a, b)) 

如果你有几个名单这是有用的,或可变数量的列表。

例如:

>>> import itertools 
>>> a = [1, 2] 
>>> b = [3, 4] 
>>> c = [5, 6] 
>>> list(itertools.product(a, b, c)) 
[(1, 3, 5), (1, 3, 6), (1, 4, 5), (1, 4, 6), (2, 3, 5), (2, 3, 6), (2, 4, 5), (2, 4, 6)] 
2

功能itertools.product()将这样的伎俩:

In [41]: a, b = [1, 2], [3, 4] 

In [42]: from itertools import product 

In [43]: list(product(a, b)) 
Out[43]: [(1, 3), (1, 4), (2, 3), (2, 4)] 

重要的是要指出的是,你需要调用内置的功能list()迭代器转换是非常重要的由product返回列表。

作为一个侧面说明,如果你的目标是计算与自身名单的产品,你会发现它使用起来得心应手可选repeat关键字参数:

In [46]: list(product(a, repeat=3)) 
Out[46]: 
[(1, 1, 1), 
(1, 1, 2), 
(1, 2, 1), 
(1, 2, 2), 
(2, 1, 1), 
(2, 1, 2), 
(2, 2, 1), 
(2, 2, 2)]