提问人:Seunghye Jeon 提问时间:4/6/2023 最后编辑:Yash MehtaSeunghye Jeon 更新时间:4/6/2023 访问量:24
为什么通过切片 2D 列表更改值时未反映列表值?
Why is the list value not reflected when I change the value by slicing the 2D list?
问:
我创建了 2D 列表,并通过对列表进行切片来更改列表的值。
mylist=[[1,3,5],[3,5,7],[5,7,9]]
mylist[1:2]=[300,400]
mylist
我本以为mylist会回来,但它回来了。[[1,3,5],[300,400],[5,7,9]]
[[1,3,5],300,400,[5,7,9]]
谁能解释一下?
谢谢。
答:
1赞
ProfDFrancis
4/6/2023
#1
你需要一双额外的[]
这样做是为了得到你想要的:
mylist=[[1,3,5],[3,5,7],[5,7,9]]
mylist[1:2]=[[300,400]]
mylist
print(mylist)
原因:
若要将单个值放入数组中的单个位置,请执行以下操作:
mylist=[[1,3,5],[3,5,7],[5,7,9]]
mylist[1]=300
mylist
print(mylist)
要将列表放在数组中的单个位置,请执行以下操作:
mylist=[[1,3,5],[3,5,7],[5,7,9]]
mylist[1]=[300,400]
mylist
print(mylist)
你告诉它把一个项目列表放到一个位置列表中
突出显示的这段代码描述了一个位置列表,尽管只包含一个位置,即 [1]。
mylist=[[1,3,5],[3,5,7],[5,7,9]]
###########
mylist[1:2]=[300,400]
###########
mylist
print(mylist)
当你告诉它用 y 值列表替换 x 个位置的列表时,Python 正在做它应该做的事情:删除 x 个位置并插入 y 个位置,即如果 x != y 则更改列表的长度。
您需要做的是告诉它用长度为 1 的列表替换位置列表(恰好包含两个值的列表)。
因此,您需要右手边是一个长度为 1 的列表:
#############
mylist[1:2]=[ [300,400] ]
#############
上一个:golang:如何定义一系列步骤
评论