slice.indices
方法的意义是什么?
s = slice(start, stop, step)
assert range(*s.indices(length)) == range(length)[s]
slice.indices
方法现在没用了,但为了向后兼容而保留,因为range(*s.indices(length))
现在可以用range(length)[s]
实现,因为在Python 3.2中为
range
添加了切片支持:
对象现在支持 index 和 count 方法。这是让更多对象完全实现range
抽象基类的努力的一部分。因此,该语言将拥有更加统一的 API。此外,collections.Sequence
对象现在支持切片和负索引,即使值大于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。