为什么当我尝试通过负索引切片修改列表时它只会添加对象

Why when I try to modify a list via a negative index slice it just adds objects

我的名单是

ls = [1,2,3,4,5]

为什么当我尝试通过负索引切片修改列表时它只会添加对象。

ls[-1:-3] = [10,10,10]

结果是

[1, 2, 3, 4, 10, 10, 10, 5]

但应该是这样

[1, 2, 3, 10, 10, 10 ]

第一种方式:

def test_new_ls():
  ls = [1,2,3,4,5]
  ls[3:5] = [10,10,10] 
  print(ls)

test_new_ls()

第二种方式:

def test_new_ls():
 ls = [1,2,3,4,5]
 #ls[3:5] = [10,10,10]
 ls[-2:] = [10,10,10] 
 print(ls)
test_new_ls()

您可能想查看 this 来源。有不同的切片和替换数组的方法。你想要的,负切片然后替换,可以这样做:

ls = [1, 2, 3, 4, 5]
ls[-3:-1] = [10, 10, 10]
>> [1, 2, 10, 10, 10, 5]

请注意,您应该使用 [-3:-1] 而不是 [-1:-3] 进行索引以获得所需的切片。 [-3:-1] returns [3,4],而 [-1:-3] returns [].

有两个错误:

  1. 在切片 [start:end] 中,start 不应大于 endls[-3:-1] 推荐。
  2. 在切片[start:end]中,索引end处的元素不包括在内。 ls[-3:-1] 表示:ls[-3]ls[-2],但没有 ls[-1].