【发布时间】:2019-11-10 19:34:52
【问题描述】:
# Attempt1 using direct index-based assignment
p=[1,2,3,4]
p[1]=p[2]=[]
print(p) # [1, [], [], 4]
// that sounds reasonable..
# Attempt2 using slice-based assignment
p=[1,2,3,4]
print(p[1:3]) # [2, 3]
p[1:3]=[]
print(p) # [1, 4] !!
在阅读here 的答案后,我的理解是,p[1:3] 应该是一个引用序列,应该在其上分配给空列表。但它似乎从列表中删除了元素! 就好像,我这样做了:
p=[1,2,3,4]
print(p) # [1, 2, 3, 4]
del p[1:3]
print(p) # [1, 4]
你能解释一下吗?
【问题讨论】:
-
您将一个切片分配给列表的某个切片。例如,您可以分配一个包含更多元素的列表来扩展列表。本质上归结为这样一个事实:修改后的列表是
oldlist[:begin] + value + oldlist[end:],begin和end分别是切片的开始和结束部分。
标签: python python-3.x list slice