创建列表列表的最佳方法是什么,列表中的第一个列表的每个值对应于第二个列表? 像:
a=[1,2,3]
b=[5,6,7]
创建c使得:
c=[[1,5][1,6][1,7][2,5][2,6][2,7][3,5][3,6][3,7]]
答案 0 :(得分:3)
最好的方法是使用itertools
库。
import itertools
a=[1,2,3]
b=[5,6,7]
c=list(itertools.product(a,b))
但它列出了元组列表。如果您特别需要列表列表,则可以执行
c=[[x, y] for x in a for y in b]
答案 1 :(得分:0)
from itertools import product
a = [1, 2, 3]
b = [5, 6, 7]
c = [list(i) for i in product(a, b)]
c的值:
[[1, 5], [1, 6], [1, 7], [2, 5], [2, 6], [2, 7], [3, 5], [3, 6], [3, 7]]
itertools.product - 来自文档:
Init签名:itertools.product(self,/,* args,** kwargs)文档字符串: 产品(* iterables,repeat = 1) - >产品对象
输入可迭代的笛卡尔积。相当于嵌套的for循环。
例如,乘积(A,B)返回与:((x,y)对应的A中的x相同 在B)中。最左边的迭代器位于最外层的for循环中,所以 以类似于里程表的方式输出元组循环(用 最右边的元素在每次迭代时都会改变。)
要计算iterable与其自身的乘积,请指定数字 使用可选的repeat关键字参数重复。例如, 产品(A,重复= 4)与产品(A,A,A,A)相同。
产品('ab',范围(3)) - > ('a',0)('a',1)('a',2)('b',0)('b',1) ('b',2)乘积((0,1),(0,1),(0,1)) - > (0,0,0)(0,0,1)(0,1,0) (0,1,1)(1,0,0)......
输入:type
此解决方案使用list comprehension