gpt4 book ai didi

python - 如何在 Python 3 中实现切片?

转载 作者:太空狗 更新时间:2023-10-30 00:51:59 24 4
gpt4 key购买 nike

我在 Python 3 中阅读了一些关于 slice 的内容。然后我写了一个程序,试图实现 __getitem__(self, slice(s))。代码如下:

class NewList:
def __init__(self, lst):
print('new list')
self._list = lst
def __getitem__(self, x):
if type(x) is slice:
return [ self._list[n] for n in range(x.start, x.stop, x.step) ] #error?
else:
return self._list[x]
...

nl1 = NewList([1,2,3,4,5])
nl1[1:3] #error occurs

然后我发现 x.stepNone,这使得 range 引发异常。那么,我应该如何实现__getitem__方法呢?

最佳答案

您需要使用slice.indices 方法。给定序列的长度,它返回一个包含开始、停止、步骤的元组:

>>> s = slice(2, 5, None)
>>> s.indices(10)
(2, 5, 1)

>>> [x for x in range(*s.indices(10))]
[2, 3, 4]

>>> s.indices(3)
(2, 3, 1)

>>> s.indices(0)
(0, 0, 1)

关于python - 如何在 Python 3 中实现切片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7087695/

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