python 列表构建器,动态列表构建器

my_list = [x for x in range(1, 101)]

#执行结果:my_list = [0, 1, 2, 3, 4 ……]

添加条件处理

my_list = [x * x for x in range(1, 101) if x % 2 == 0]
#执行结果: my_list = [4, 16, 36 ……]

多层循环嵌套

my_list = [x + y for x in 'abc' for y in 'xyz']
#执行结果:['ax', 'ay', 'az', 'bx', 'by', 'bz', 'cx', 'cy', 'cz']

动态列表(节省内存)

# 常规构建器的做法
lix = [2*x + 1 for x in range(1, 101)]
# 执行结果:[1,3,5,7,9,11,13,15,17.....]
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
# 常规构建器可以直接构建生成
# 但是存在问题,如果一次构建的数据量太大,会严重占用内存
# 我们在使用该列表的时候,有可能只是使用前10项
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
# 使用列表动态构建器
lix = (2 * x - 1 for x in range(1, 101))
# 执行结果:print (lix) --> <generator object <genexpr> at 0x7f232e462048>
next(lix)
# 执行结果:1
next(lix)
# 执行结果:3
next(lix)
# 执行结果:5
next(lix)
# 执行结果:7
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
# 列表动态构建器
# 和构建器基本没有区别,创建的时候列表中是没有数据的
# 必须通过next()函数来获取列表中的下一条数据
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

参考文章https://blog.csdn.net/xc_zhou/article/details/80589808

原文地址:https://www.cnblogs.com/yummylucky/p/11232354.html