如何迭代切片?

问题描述 投票:1回答:1

python中的slice不可迭代。这段代码:

s = slice(1, 10, 2)
iter(s)

导致此错误:

TypeError: 'slice' object is not iterable

这是我通过创建可迭代列表来显示切片的代码:

list(range(s.start, s.stop, s.step))

这使用切片对象的startstopstep属性。我将它们插入一个范围(一个不可变的序列类型)并创建一个列表:

[1, 3, 5, 7, 9]

有什么遗失的吗?我可以更好地迭代切片吗?

python python-3.x loops iterator slice
1个回答
1
投票

slice不是可迭代的。它不包含元素,而是指定在将切片应用于该iterable时返回某些其他iterable中的哪些元素。

因为它不是可迭代的,所以你不能迭代它。但是,正如您所发现的那样,您可以使用range()获取将从其应用的迭代中返回元素的索引 - 并且您可以迭代:

s = slice(1, 10, 2)
indices = range(s.start, s.stop, s.step)
it = iter(indices)

>>> list(it)
[1, 3, 5, 7, 9]
© www.soinside.com 2019 - 2024. All rights reserved.