我想要做的是在下面的代码中打印0到5的整数,但我得到的只是迭代器的地址?
def main():
l = []
for i in range(0,5):
l.append(i)
it = iter(l)
for i in range(0,5):
print it
it.next()
if __name__ == '__main__':
main()
答案 0 :(得分:9)
要访问迭代器返回的值,可以使用迭代器的next()方法,如下所示:
try:
while True:
val = it.next()
print(val)
except StopIteration:
print("Iteration done.")
next()既有推进迭代器又返回下一个元素的目的。迭代完成后抛出StopIteration。
由于这非常麻烦,所有这些都很好地包含在for-syntax中:
for i in it:
print(i)
print("Iteration done.")
更多链接:
答案 1 :(得分:3)
当你有一个迭代器时,你必须迭代它,而不是在一个范围内。
for i in it:
print(i)
答案 2 :(得分:3)
当您使用for循环时,实际上是隐式调用迭代器对象的__next__
方法。所以,你不会使用像range这样的东西,而只是使用迭代器本身。
for i in it:
print i
对于它的价值,Python 2中的xrange
和Python 3中的range
返回一个迭代器,所以你只需用你的第一个循环来编写你想要的解决方案,