分配给 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)时,下标对应于列表中连续范围的元素,因此可以用不同数量的元素替换。
我正在阅读“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)时,下标对应于列表中连续范围的元素,因此可以用不同数量的元素替换。