gpt4 book ai didi

python-3.x - 范围反转时为什么要使用range_iterator?

转载 作者:行者123 更新时间:2023-12-04 03:31:40 25 4
gpt4 key购买 nike

我可以用range对象下标:

>>> r = range(4)
>>> r
range(0, 4)
>>> r[3]
3
>>> for i in r:
print(i)

0
1
2
3
>>> list(r)
[0, 1, 2, 3]

但是,如果我在同一个 reversed对象上调用 range:
>>> r = reversed(range(4))
>>> r
<range_iterator object at memaddr>
>>> for i in r:
print(i)
3
2
1
0
>>> r[3]
TypeError: 'range_iterator' object is not subscriptable # ?
>>> range(r)
TypeError: 'range_iterator' cannot be interpreted as an integer # ?
>>> list(r)
[] # ? uhmm

嗯...演技有点像发电机,但用处不大。

反向范围对象在发出嘎嘎声方面有别于普通生成器/迭代器的原因吗?

最佳答案

reversed函数返回迭代器,而不是序列。那就是它的设计方式。您所看到的range_iterator本质上是您想要的反转iter上调用的range

要获得反向序列而不是反向迭代器,请使用“异形笑脸”切片:r[::-1](其中r是从range获得的值)。这在Python 2(其中range返回列表)和Python 3(其中range返回类似序列的range对象)中都有效。

关于python-3.x - 范围反转时为什么要使用range_iterator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35834210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com