【发布时间】:2014-11-20 01:29:07
【问题描述】:
是否有一种内置或简单的方法来表示切片对象,以便将表示放在括号内将导致相关的__getitem__ 完全按照原始切片对象解析表示?事实上,我希望得到最小的 :: 表示法,而不是 slice(...) 表示法(尽管两者都有效)。
举个例子说明一下:我想定义一个函数slice_repr这样
slice_repr(slice(1, None)) ## Will return '1:'
slice_repr(slice(1, None, None)) ## Will return '1:'
slice_repr(slice(1, 10)) ## Will return '1:10'
slice_repr(slice(1, 10, None)) ## Will return '1:10'
slice_repr(slice(1, None, 3)) ## Will return '1::3'
slice_repr(slice(1, 10, 3)) ## Will return '1:10:3'
slice_repr(slice(10)) ## Will return ':10'
slice_repr(slice(None, 10)) ## Will return ':10'
slice_repr(slice(None, 10, 3)) ## Will return ':10:3'
slice_repr(slice(None, None, 3)) ## Will return '::3'
如果函数可以处理类似的输入会更好
(slice(None, None, 3), Ellipsis, 3)
返回
'::3,...,3'
【问题讨论】:
-
你打算用这样的字符串做什么?您不能将其作为参数传递给
__getitem__;它不会解析这样一个字符串所需的值。__getitem__长期以来一直支持直接接收切片对象作为参数:x.__getitem__(slice(10))等价于x[:10]。 -
这实际上仅用于表示目的。
标签: python slice representation