我正试图从切片中获取信息。这是我的功能的开始。 (我已尝试过“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值?我试图做的是能够使用函数内列表中的数据。
答案 0 :(得分: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]
答案 1 :(得分:0)
如果您需要切片对象中的信息,请访问其属性start
,stop
和step
。这些属性记录在案here。