【发布时间】:2018-06-06 16:26:31
【问题描述】:
根据extended slices 上的 Python 文档:
如果您有一个可变序列,例如列表或数组,您可以 分配或删除扩展切片,但有一些区别 在分配给扩展切片和常规切片之间。分配给一个 可以使用常规切片来改变序列的长度:
>>> a = range(3) >>> a [0, 1, 2] >>> a[1:3] = [4, 5, 6] >>> a [0, 4, 5, 6]扩展切片没有这么灵活。分配给扩展时 切片,语句右侧的列表必须包含 与它要替换的切片相同数量的项目:
>>> a = range(4) >>> a [0, 1, 2, 3] >>> a[::2] [0, 2] >>> a[::2] = [0, -1] >>> a [0, 1, -1, 3] >>> a[::2] = [0,1,2] Traceback (most recent call last): File "<stdin>", line 1, in ? ValueError: attempt to assign sequence of size 3 to extended slice of size 2
我不明白为什么“普通”切片方法有效但“扩展”切片方法不起作用。 “普通”切片和“扩展”切片的区别是什么?为什么“扩展”切片方法会失败?
【问题讨论】:
-
区别在于第三个参数,即步骤,如开头段落中所述。它失败是因为语句右侧的列表不包含与它要替换的切片 (2) 相同数量的项目 (3),这是您复制的文本所说的必需项。这就是为什么他们将其用作该描述的说明。不清楚您所说的 “为什么” 是什么意思。
标签: python python-3.x list variable-assignment slice