ls[-1:1:-2] 就是取列表-1到1的位置,-2的负号表示从后往前取,2表示每次跳过一个元素。
ls[-1:1:-2]=lt就是把 lt 的值按lt表里的顺序赋值到列表 ls 的刚刚取得位置里,所以结果是 [0, 1, 'b', 3, 'a']
切片 [start : end : step] 表示在左开右闭区间 [start, end) 中取值,step为步长,缺省的话默认为1,负数则是向前步进
start end 从前向后取时从0开始计算, 为负数时最后一个元素序号为-1,-2,-3。。。向前依次推
-1:1:-2 ,表示从最后一个到序号1之后那个为止,不包括索引号为1的那个元素
另外:原题中的前2行还能这么写,最后看看切片step为负值时的取值:
>>> ls=[*range(5)]
>>> lt=list('ab')
>>> ls
[0, 1, 2, 3, 4]
>>> lt
['a', 'b']
>>> ls[-1:1:-2]
[4, 2]
>>> ls[-1:-6:-2]
[4, 2, 0]
>>> ls[-1:-5:-2]
[4, 2]
>>> ls[-1::-2]
[4, 2, 0]