序列del方法删除
想问一下大家x=
del x[:]
x=[]
这个程序的实现原理是什么?切片操作为什么会影响到x指向的对象? 这不明摆了,没有影响到x指向的对象。
x=[] 你自己把重新改变了指向的对象。
>>> x=
>>> id(x)
47759048
>>> del x[:]
>>> x
[]
>>> id(x)
47759048
>>> x.append(6)
>>> x
>>> id(x)
47759048 ba21 发表于 2022-7-10 19:49
这不明摆了,没有影响到x指向的对象。
x=[] 你自己把重新改变了指向的对象。
x=[]是那个del的结果{:10_285:} 咕咕鸭 发表于 2022-7-10 19:52
x=[]是那个del的结果
对象没有改变,还是那个列表,你看2#,id(x)两次得到的结果是一样的,证明他们地址一样,是同一个对象,del x[:]只不过把x的所有项全部删除了而已 咕咕鸭 发表于 2022-7-10 19:52
x=[]是那个del的结果
那反问你下,你怎么证明影响到x指向的对象了?
我上的代码不是明显证明了没有改变???? 本帖最后由 ba21 于 2022-7-10 20:24 编辑
我想我知道你想说什么了。问题 没有描述清楚。
你是想说 [:]切片应该是复制了 x中的内容对吧。 del x[:] 不应该删除 x原有的数据。
那只能告诉你,[:]在del中的应用不是你想的那样。它的功能指的是要删除元素的范围。
y = x[:] 这才是复制一份赋值给新的对象。其实这里x[:]也是指复制内容的范围。 ba21 发表于 2022-7-10 20:18
我想我知道你想说什么了。问题 没有描述清楚。
你是想说 [:]切片应该是复制了 x中的内容对吧。 del x[ ...
谢谢,是我没讲清楚{:10_329:} 临时号 发表于 2022-7-10 19:59
对象没有改变,还是那个列表,你看2#,id(x)两次得到的结果是一样的,证明他们地址一样,是同一个对象,del x ...
谢谢吖{:10_332:}
页:
[1]