slice.indices 方法的要点是什么?

问题描述 投票:0回答:1

既然我们有以下等式,那么

slice.indices
方法的意义是什么?

s = slice(start, stop, step)
assert range(*s.indices(length)) == range(length)[s]
python range slice
1个回答
0
投票

slice.indices
方法现在没用了,但为了向后兼容而保留,因为
range(*s.indices(length))
现在可以用
range(length)[s]
实现,因为在
Python 3.2
中为range添加了切片支持:

range
对象现在支持 indexcount 方法。这是让更多对象完全实现
collections.Sequence
抽象基类的努力的一部分。因此,该语言将拥有更加统一的 API。此外,
range
对象现在支持切片和负索引,即使值大于
sys.maxsize
。这使得范围与列表的互操作性更强:

>>> range(0, 100, 2).count(10)
1
>>> range(0, 100, 2).index(10)
5
>>> range(0, 100, 2)[5]
10
>>> range(0, 100, 2)[0:5]
range(0, 10, 2)

(由 Daniel Stutzbach 在 bpo-9213 中贡献,作者:Alexander Belopolsky 在 bpo-2690 中,以及 Nick Coghlan 在 bpo-10889 中。)

功劳归于Karl Knechtel

© www.soinside.com 2019 - 2024. All rights reserved.