也许我已经成为网络上错误信息的牺牲品,但我认为这更可能只是因为我误解了某些东西.根据我到目前为止所学到的,range()是一个生成器,生成器可以用作迭代器.但是,这段代码:
myrange = range(10)
print(next(myrange))
Run Code Online (Sandbox Code Playgroud)
给我这个错误:
TypeError: 'range' object is not an iterator
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?我期待这个打印0,并进入下一个值myrange.我是Python的新手,所以请接受我对这个相当基本的问题的道歉,但我无法在其他任何地方找到一个好的解释.
如何获得迭代器的最后一个元素?我知道我必须用尽迭代器并返回它产生的最后一个值,所以简单的方法是:
def last(it):
for value in it:
pass
return value
Run Code Online (Sandbox Code Playgroud)
(您可能想抓住NameError并提出其他内容以进行空输入,但您明白了。)
有没有我没有想到的更简单的解决方案,例如,使用itertools.islice()(虽然它似乎不接受负索引)或类似的方法?