使用迭代器打印整数

时间:2011-01-14 03:17:56

标签: python list printing iterator

我想要做的是在下面的代码中打印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()

3 个答案:

答案 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返回一个迭代器,所以你只需用你的第一个循环来编写你想要的解决方案,