创建一个列表,连接第二个列表的每个条目并存储它(python)

时间:2017-11-28 14:21:14

标签: python list data-structures

创建列表列表的最佳方法是什么,列表中的第一个列表的每个值对应于第二个列表? 像:

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

2 个答案:

答案 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