【发布时间】:2019-07-23 07:09:07
【问题描述】:
python 中的slice 是不可迭代的。这段代码:
s = slice(1, 10, 2)
iter(s)
导致此错误:
TypeError: 'slice' object is not iterable
这是我通过创建可迭代列表来显示切片的代码:
list(range(s.start, s.stop, s.step))
这使用切片对象的start、stop 和step 属性。我将它们插入一个范围(不可变的序列类型)并创建一个列表:
[1, 3, 5, 7, 9]
有什么遗漏吗?我可以更好地迭代切片吗?
【问题讨论】:
-
你不应该只需要一个
range(1, 10, 2)吗? -
范围或多或少与切片非常相似,因此我可以使用范围来生成该序列,但我专注于深入了解切片是什么以及如何操作它。切片不是先来的吗?那么范围呢? Range 似乎是一个生成器,内存效率更高。
-
此外,在实现
__setitem__时,原始问题具有实际相关性,您希望在其中支持切片。 -
range(s.start, s.stop, s.step)在 s.start 或 s.step 为 None 时不起作用。
标签: python python-3.x loops iterator slice