lzymm1 发表于 2020-8-7 14:55:29

【Python新手求助】访问生成器


7. 上节课我们通过课后作业的形式学习到了“列表推导式”,那请问如果我把中括号改为小括号,会不会得到“元组推导式”呢?自己动手试试看再看答案哦^_^

Python3 木有“元组推导式”,为嘛?没必要丫,有了“列表推导式”已经足够了。

那为什么“>>> tuple1 = (x**2 for x in range(10))”不会报错?

因为你误打误撞得到了一个生成器。
关于生成器的概念小甲鱼今后会细讲,你可以尝试这么去访问我们刚刚的生成器:

# 注意,Python3 开始 next() 方法改为 __next__() 哦~
tuple1.__next__()
0
tuple1.__next__()
1
tuple1.__next__()
4
tuple1.__next__()
9
tuple1.__next__()
16
tuple1.__next__()
25
tuple1.__next__()
36

十三讲的课后解析。为什么我会报错?
>>> tuple1._next_()
Traceback (most recent call last):
File "<pyshell#44>", line 1, in <module>
    tuple1._next_()
AttributeError: 'generator' object has no attribute '_next_'
求解。

zltzlt 发表于 2020-8-7 14:55:54

__next__ 前后是两个下划线

lzymm1 发表于 2020-8-7 14:57:34

zltzlt 发表于 2020-8-7 14:55
__next__ 前后是两个下划线

原来如此,谢谢谢谢
页: [1]
查看完整版本: 【Python新手求助】访问生成器