你可以在不使用列表的情况下向后迭代一个数字吗?

Joh*_*ohn 3 python iteration list

如何在不使用Python 3中的列表的情况下向后迭代数字?

使用列表,我可能会做类似的事情:

li = list(range(100))
for i in li[::-1]:
    print(i)
Run Code Online (Sandbox Code Playgroud)

这是一个很好的解决方案,但它不适用于大量的数据.现在,我试图用大数字向后迭代一个数字,但是发生溢出错误,所以我想我需要以某种方式找到一种方法来向后迭代一个数字而不使用列表.

有什么办法吗?

Sve*_*ach 11

提供__reversed__()特殊方法的迭代器也支持反向迭代.在Python 3.x中,range()迭代器有这个方法,所以你也可以使用

for i in reversed(range(100)):
    print(i)
Run Code Online (Sandbox Code Playgroud)

在Python 2.x中,xarnge()允许反向迭代:

for i in reversed(xrange(100)):
    print i
Run Code Online (Sandbox Code Playgroud)

两个版本都不会将整个列表存储在内存中.