A slice
не повторяется.Он не содержит элементов, но вместо этого указывает, какие элементы в некоторой другой итерации должны быть возвращены, если срез применяется к этой итерации.
Поскольку это не итерация, вы не можете выполнить итерацию по нему.Однако, как вы обнаружили, вы можете получить индексы, для которых он будет возвращать элементы из итерируемого объекта, к которому он применяется, используя range()
- и вы можете выполнить итерацию:
s = slice(1, 10, 2)
indices = range(s.start, s.stop, s.step)
it = iter(indices)
>>> list(it)
[1, 3, 5, 7, 9]