- 利用for、range()生成一个列表
i = []
for x in range(10):
if x % 2 == 0:
i.append(x)
print(i)
[0, 2, 4, 6, 8]
- 列表解析(实则为生成列表的表达式)
[i for i in range(10) if i % 2 ==0]
[0, 2, 4, 6, 8]
可见输出结果是一样的
- 缺点是运行一次就会生成整个列表,列表很大的话就会消耗大量的内存空间。
- 对于复杂的循环,传统的语法更容易理解,如for循环嵌套。
- 生成器
(i for i in range(10) if i % 2 ==0)
<generator object <genexpr> at 0x0000017CA889A8E0>
返回一个生成器,而不是列表。
因此我们可以对生成器进行计算,从中取值。
for i in (i for i in range(10) if i % 2 ==0):
print(i)
0
2
4
6
8
- 如果创建一个含有大量元素的列表,那将会占用很大的空间,这时我们可以利用生成器边循环边计算,不用创建完整的列表,这样就会节省大量的空间。
- python中,边循环边计算的机制就称为生成器。
网友评论