我正在尝试编写一个 BitArray 类,如果有类似 numpy 的数组 x[i:j:k] = val
这样的东西会很不错。
我如何用 Python 编写它?不是 __setslice__
,对吧?因为那只需要三个参数,而我需要一个参数来使用四个。
最佳答案
__setslice__
已弃用 - 您需要将 __setitem__
与切片参数一起使用。
请注意,根据 Python documentation , 切片只能用以下语法形式来完成:a[i:j:step]
, a[i:j, k:l]
, or a[..., i:j]
。基于冒号的语法用于定义单个切片对象,但如第二个示例所示,您可以有多个切片参数(它们作为切片元组传入)。
这是一个打印 key
参数的示例,以查看其形式:
>>> class Foo(object):
>>> def __setitem__(self, key, value):
>>> print key
>>>
>>> a = Foo()
>>> a[1:1] = 1
slice(1, 1, None)
>>>
>>> a[1:1:1] = 1
slice(1, 1, 1)
>>>
>>> a[1:1, 1:1] = 1
(slice(1, 1, None), slice(1, 1, None))
关于python - python 中的扩展切片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12101529/