1

我正在尝试从切片中获取信息。这是我的功能的开始。(我已经为第四行尝试了“elif isinstance(key,slice):”但无法让它工作)

    def __getitem__(self, key):
    if isinstance(key,(int, long)):
        #do stuff if an int
    elif #item is slice
        #do stuff if a slice

如果我调用 obj[4:6] 来调用该函数并在函数中打印“key”变量,它会打印“slice(4,6,None)”如何解析 4 和 6 值? 我正在尝试做的是能够使用函数内部列表中的数据。

4

2 回答 2

5
>>> slice(4,5).start
4
>>> slice(4,5).stop
5
>>> slice(4,5).step  #None

切片对象的一种特别有用的方法是indices方法:

>>> slice(4,5).indices(12)
(4, 5, 1)

你可以这样使用它:

 for i in range(*my_slice.indices(len(self))):
     print self[i]

请注意,这确实与负索引或步骤有关:

>>> slice(4,-5).indices(12)
(4, 7, 1)
>>> print range(*slice(None,None,-1).indices(12))
[11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
于 2013-06-04T18:45:20.190 回答
0

如果您想要切片对象的信息,请访问其属性startstopstep。这些属性记录在这里

于 2013-06-04T18:45:31.220 回答