也许我已经成为网络上错误信息的牺牲品,但我认为更可能的是我误解了一些东西。根据我目前所学,range()是一个生成器,生成器可以用作迭代器。但是,此代码:
myrange = range(10)
print(next(myrange))
给我这个错误:
TypeError: 'range' object is not an iterator
我错过了什么?我希望它打印0,并前进到myrange
中的下一个值。我是Python新手,所以请接受我对这个基本问题的歉意,但我在其他地方找不到好的解释。
Tags:
range
是一类不可变的iterable对象。它们的迭代行为可以与list
s进行比较:不能直接对它们调用next
;必须使用iter
来获取迭代器。所以不,
range
不是生成器。你可能在想,“为什么他们不直接让它变得可接受”?好吧,
range
s有一些有用的属性,这样做是不可能的:start
、stop
和step
属性(自Python 3.3以来)、count
和index
方法,并且它们支持in
、len
和__getitem__
操作。range
上重复多次。相关问题 更多 >
编程相关推荐