永发信息网

python为什么我写的generator不能迭代?

答案:2  悬赏:10  手机版
解决时间 2021-12-20 23:51
  • 提问者网友:嘚啵嘚啵
  • 2021-12-20 02:41
def first(n):
if n>9:
m = int(str(n)[::-1])
while n == m :
yield n
else:
yield n

def nothuishu(x):
if x in first:
while x < 1000:
yield x

>>> first(4)

>>> next(first)
Traceback (most recent call last):
File "", line 1, in
TypeError: 'function' object is not an iterator
>>> from collections import Iterable
>>> isinstance(first,Iterable)
False
>>> isinstance(nothuishu,Iterable)
False
>>> from collections import Iterator
>>> isinstance(nothuishu,Iterator)
False

小白求问:
为什么我定义的两个函数都不是Iterable、Iterator?
但是nothuishu(1000)输出的是生成器会输出的东西呀
只要是一个个的就可以迭代吧,这样写哪里不对?
最佳答案
  • 五星知识达人网友:一袍清酒付
  • 2021-12-20 03:14
函数没有问题,调用如下
y = first(4)
print(next(y))
print(isinstance(y,Iterable))
全部回答
  • 1楼网友:孤老序
  • 2021-12-20 04:15
题主可以先不急着做generator,就先写一个简单的函数,打印出a - z以及aa - zz。然后再看怎么改成无限循环和generator。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯