我正在尝试从切片中获取信息。这是我的功能的开始。 (我已经在第四行尝试了“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 值?我想做的是能够在函数内使用列表中的数据。
最佳答案
>>> 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]
关于python - 从切片对象解析切片信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16925206/