python - python 中的扩展切片?

标签 python slice

我正在尝试编写一个 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/

相关文章:

python - 使用 Selenium 在 Django 中测试用户登录

python - 导入错误 : cannot import name urandom

python - 在 Python 中将值转换为各自数据类型的最快方法

python - 如何解决错误 : Zip argument #1 must support iteration

arrays - 如何在 golang 运行时动态设置数组的索引?

python - 列表的平均值

python - for 循环和索引切片的组合未返回预期结果

c++ - 避免 Python 式切片的陷阱

python - 下标序列时Python中的::(双冒号)是什么?

python - 如何根据连续天数对 DataFrame 进行索引