为什么当我尝试通过负索引切片修改列表时它只会添加对象
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 []
.
有两个错误:
- 在切片
[start:end]
中,start
不应大于 end
。 ls[-3:-1]
推荐。
- 在切片
[start:end]
中,索引end
处的元素不包括在内。
ls[-3:-1]
表示:ls[-3]
和 ls[-2]
,但没有 ls[-1]
.
我的名单是
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 []
.
有两个错误:
- 在切片
[start:end]
中,start
不应大于end
。ls[-3:-1]
推荐。 - 在切片
[start:end]
中,索引end
处的元素不包括在内。ls[-3:-1]
表示:ls[-3]
和ls[-2]
,但没有ls[-1]
.