Python生成器
生成器表达式 generator expression
生成器是迭代器的一种。与解析式的不同是惰性计算、延迟计算
语法:
(返回值 for 元素 in 可迭代对象 if 条件)
使用next()获取生成器的值,每次顺序取一个值,所有值被取完之后再取值就返回None
应用举例
var = ("{:x<4}".format(i) for i in range(10) ) print(var) print(next(var))
运行结果
<generator object <genexpr> at 0x000001A1C2310F10> 0xxx
因为生成器也是迭代器,所以可以遍历
for x in var: print(x)
运行结果
1xxx
2xxx
3xxx
4xxx
5xxx
6xxx
7xxx
8xxx
9xxx
因为生成器只能向前,不能往回走,所以会有如下结果:
var = ("{:x<4}".format(i) for i in range(10) ) print(var) print(next(var)) for x in var: print(x) print('---------------') for x in var: print(x)
运行结果
<generator object <genexpr> at 0x000001BA6EA30F10> 0xxx 1xxx 2xxx 3xxx 4xxx 5xxx 6xxx 7xxx 8xxx 9xxx ---------------
生成器练习
num=(print('{}'.format(i+1)) for i in range(3)) num1=next(num) num2=next(num) sum_num=num1+num2 print(sum_num)
运行结果
1 2 Traceback (most recent call last): File "C:/Users/ASUS-PC/PycharmProjects/zhanghao/复习/生成器.py", line 13, in <module> sum_num=num1+num2 TypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType'
产生上面结果是因为:print函数的返回值是None,所以加不了
posted on 2020-10-01 21:50 hopeless-dream 阅读(127) 评论(0) 编辑 收藏 举报