假设我们有两个列表a
和b
:
a = [1, 2]
b = [3, 4]
是否有快速操作会返回元组列表[(1,3), (1,4), (2,3), (2,4)]
?
答案 0 :(得分: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)]
答案 1 :(得分: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 :(得分: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)]