使用多个循环创建Python列表

使用多个循环创建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','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…]语法来实现呢?

您需要两个列表的笛卡尔乘积:

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