Parsing slice information from a slice object?
我正试图从一个切片中获取信息。这是我功能的开始。(我在第四行中尝试了"elif isinstance(key,slice):",但无法使其生效)
1 2 3 4 5 | 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个值?我要做的是能够使用函数内部列表中的数据。
1 2 3 4 5 | >>> slice(4,5).start 4 >>> slice(4,5).stop 5 >>> slice(4,5).step #None |
切片对象的一个特别有用的方法是
1 2 | >>> slice(4,5).indices(12) (4, 5, 1) |
号
您可以这样使用它:
1 2 | for i in range(*my_slice.indices(len(self))): print self[i] |
请注意,这确实会带来负面指数或步骤:
1 2 3 4 | >>> 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] |
。
如果要从slice对象获取信息,请访问其属性