分配给 Python 反向列表中的切片

Assigning to slices in Python reversed list

我正在阅读“Fluent Python”一书,其中有一节讨论了如何分配给切片。 例如:

l = list(range(10))
l[2:5] = [20, 30]
#l is [0, 1, 20, 30, 5, 6, 7, 8, 9]

我尝试使用一些自定义示例来测试此功能,但出现以下错误:

l = list(range(10))
l[::-1] = [10, 1] #ValueError: attempt to assign sequence of size 2 to extended slice of size 10
print(l)

但这行得通:

l = list(range(10))
l = l[::-1]
l[:] = [10, 1]
print(l) #[10, 1]

为什么我会收到错误消息?我想做的和上一个单元格不一样吗?

谢谢

当您使用非1步时(例如l[::-1]l[2:20:3]),下标对应于特定元素索引的列表,因此您需要提供相同数量的元素。

当您不指定步长(或步长为 1)时,下标对应于列表中连续范围的元素,因此可以用不同数量的元素替换。