紧凑生成列表python的列表

2024-04-27 00:33:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须创建一个列表列表(每个内部列表都有n固定元素)。现在,为了n=3,我在做:

my_list = []
for x in range(min_inner max_inner + 1):
    for y in range(min_outer, max_outer + 1):
        for z in range(fixed_param):
            my_list.append([x, y, z])

当我尝试列表理解时,比如:

[[x,y,z] for x in range(1,4), y in range(1,4), z in range (4)]

我得到一个名字错误

NameError: name 'z' is not defined

有什么办法吗?考虑到n可以是任意数(尽管不一定是任意大的)


Tags: in元素列表forparammyrangemin
1条回答
网友
1楼 · 发布于 2024-04-27 00:33:32

您还需要在列表中的范围对象上循环。你知道吗

[[x,y,z] for x in range(1,4) for y in range(1,4) for z in range (4)]

另外,作为一种更简洁的方法,您可以使用itertools.product()来获得相同的结果:

from itertools import product    
list(product(range(1,4),range(1,4),range(4)))

注意,itertools.product()返回一个迭代器对象,它比返回列表的列表理解更优化(在内存使用方面)。如果您只想对结果进行迭代,则不需要将结果转换为列表。否则列表理解会执行得更快。你知道吗

相关问题 更多 >