```
也可以在列表生成器里加三元运算:
a=[i5 if i>5 else i2 for i in range(11)]
print(a)
输出为:
[0, 2, 4, 6, 8, 10, 30, 35, 40, 45, 50]
列表生成器格式:
a=(i for i in range(10)
print(a)
输出为:
<generator object <genexpr> at 0x0000000001DC77C8>
并没有输出列表,只是返回了一个表达式,generato就是列表生成器的意思,里面只是储存了生成器的方法,当还没有生成。节省了内存空间。
可以用next函数调用即可生成结果:
**a=(i for i in range(10))
print(a)
print(next(a))
print(next(a))
print(next(a))
print(next(a))
print(list(a))
输出结果为:
<generator object <genexpr> at 0x0000000001DC77C8>
0
1
2
3
[4, 5, 6, 7, 8, 9]
**
**注意:生成器只能往前走,不能后退。已经生成的数据,就不再包含在剩余的表达式里面了,程序走到最后会报错**
生成器只有一个next方法,不能切片。
原文地址:https://blog.51cto.com/13543767/2415310
时间: 2024-10-27 09:49:37