python - 从下标符号构建切片对象

标签 python slice

我想从下标表示法获取切片对象。到目前为止,我已经使用了一个 hacky 技巧来利用 Python 内置下标来切片转换功能:

class Slice:
    def __getitem__(self, item):
        return item

例如,Slice()[1:2] 将返回 slice(1,2,None)

有谁知道更简单的方法吗?

最佳答案

如果您必须使用下标表示法,那么除了使用 type 创建的动态类之外,您当前的解决方案是最紧凑的。 :

>>> Slice = type('', (), {'__getitem__': lambda _, x: x})()
>>> Slice[1:2]
slice(1, 2, None)
>>> Slice[1:2:3]
slice(1, 2, 3)
>>>

但是这样的代码通常很难理解/维护/扩展等。

相反,我建议您使用 slice ,它允许您直接创建切片对象:

>>> slice(1, 2)
slice(1, 2, None)
>>> slice(1, 2, 3)
slice(1, 2, 3)
>>>

内置函数是专门为此目的而制作的(嗯,还有其他一些目的,例如使用 isinstance 进行类型检查),因此非常可移植且具有 Python 风格。

关于python - 从下标符号构建切片对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26453595/

相关文章:

dictionary - 在给定 Kotlin 中的键列表的情况下切片 map

json - Go json.Unmarshal() 适用于单个实体但不适用于 slice

python - 计算字符串中的连续数字

python - 如何将列表值分配给excel文件中的列?

python - 将下载的字体添加到 Tkinter

arrays - 如何基于参数对对象列表进行分类

python - python的list切片效率如何?

python - 使用 tf.while_loop 对张量进行切片

python - Python中的JSON解析错误

python - Seaborn tsplot 不显示数据