使用多个循环创建Python列表
假设我有一个列表['A','B','C'] 第二个[1,2] 我想创建一个新列表[a,1,a,2,B,1…] 显然,可以使用如下的for循环轻松完成:使用多个循环创建Python列表,python,list,Python,List,假设我有一个列表['A','B','C'] 第二个[1,2] 我想创建一个新列表[a,1,a,2,B,1…] 显然,可以使用如下的for循环轻松完成: a = ['A','B','C'] b = [1,2] c = [] for x in a: for y in b: c.append((x,y)) c [('A', 1), ('A', 2), ('B', 1), ('B', 2), ('C', 1), ('C', 2)] 但是我如何使用[x for x in…]语法
a = ['A','B','C']
b = [1,2]
c = []
for x in a:
for y in b:
c.append((x,y))
c
[('A', 1), ('A', 2), ('B', 1), ('B', 2), ('C', 1), ('C', 2)]
但是我如何使用[x for x in…]语法来实现呢?您需要两个列表的笛卡尔乘积:
>>> from itertools import product
>>> list(product(a, b))
[('A', 1), ('A', 2), ('B', 1), ('B', 2), ('C', 1), ('C', 2)]
与显式列表理解不同,它可以轻松地扩展到任意数量的输入可编辑项。有关详细信息,请参阅。在您的情况下,版本可能是:
>>> [(x, y) for x in "ABC" for y in [1,2]]
[('A', 1), ('A', 2), ('B', 1), ('B', 2), ('C', 1), ('C', 2)]
请注意,顺序很重要,即对于固定的x='a',y的可能值首先迭代。请查看itertools.product:
>>>来自itertools进口产品
>>>a=['a','B','C']
>>>b=[1,2]
>>>[x代表产品A、b中的x]
[A',1',A',2',B',1',B',2',C',1',C',2]
使用python列表:
[(i, j) for i in a for j in b]
使用模块:
from itertools import product
list(product(a, b))
[x for x in…]语法有一个名称,它称为列表理解,您可以在[and]之间编写循环,并将最内层放在循环之前
[(x, y) for x in a for y in b]