循环切片的索引

Jos*_*der 0 python

我正在尝试__getitem__在python中实现类的方法.我想试试像......

def __getitem__(self, key):
  if isinstance(key, int):
    return foo(key)
  elif isinstance(key, slice):
    return [foo(k) for k in key]
  else:
    raise TypeError("Invalid index.")
Run Code Online (Sandbox Code Playgroud)

...但'slice' object is not iterable每当我真正尝试使用切片时,我都会收到错误.在python中执行此操作的正确方法是什么?

Ign*_*ams 5

使用indices()切片的方法,并将结果传递给range()xrange().

>>> slice(2, 5).indices(7)
(2, 5, 1)
>>> range(*slice(2, 5).indices(7))
[2, 3, 4]
>>> range(*slice(2, 10).indices(7))
[2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)