gpt4 book ai didi

python - 在 __getitem__ 中实现切片

转载 作者:IT老高 更新时间:2023-10-28 21:08:23 25 4
gpt4 key购买 nike

我正在尝试为我正在创建的创建矢量表示的类实现切片功能。

到目前为止,我有这段代码,我相信它会正确实现切片,但是每当我执行像 v[4] 这样的调用时,其中 v 是一个向量,python 返回一个关于没有足够参数的错误.所以我想弄清楚如何在我的类中定义 getitem 特殊方法来处理普通索引和切片。

def __getitem__(self, start, stop, step):
index = start
if stop == None:
end = start + 1
else:
end = stop
if step == None:
stride = 1
else:
stride = step
return self.__data[index:end:stride]

最佳答案

__getitem__() 方法会在对象被切片时接收到一个 slice 对象。只需查看 slice 对象的 startstopstep 成员,即可获取组件切片。

>>> class C(object):
... def __getitem__(self, val):
... print val
...
>>> c = C()
>>> c[3]
3
>>> c[3:4]
slice(3, 4, None)
>>> c[3:4:-2]
slice(3, 4, -2)
>>> c[():1j:'a']
slice((), 1j, 'a')

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

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