鱼C论坛

 找回密码
 立即注册
查看: 1849|回复: 7

[已解决]序列del方法删除

[复制链接]
发表于 2022-7-10 19:45:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
想问一下大家
x=[1,2,3,4,5]
del x[:]
x=[]
这个程序的实现原理是什么?切片操作为什么会影响到x指向的对象?
最佳答案
2022-7-10 19:49:11
这不明摆了,没有影响到x指向的对象
x=[] 你自己把重新改变了指向的对象。

>>> x=[1,2,3,4,5]
>>> id(x)
47759048
>>> del x[:]
>>> x
[]
>>> id(x)
47759048
>>> x.append(6)
>>> x
[6]
>>> id(x)
47759048
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-7-10 19:49:11 | 显示全部楼层    本楼为最佳答案   
这不明摆了,没有影响到x指向的对象
x=[] 你自己把重新改变了指向的对象。

>>> x=[1,2,3,4,5]
>>> id(x)
47759048
>>> del x[:]
>>> x
[]
>>> id(x)
47759048
>>> x.append(6)
>>> x
[6]
>>> id(x)
47759048
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-10 19:52:10 | 显示全部楼层
ba21 发表于 2022-7-10 19:49
这不明摆了,没有影响到x指向的对象。
x=[] 你自己把重新改变了指向的对象。

x=[]是那个del的结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-10 19:59:19 | 显示全部楼层
咕咕鸭 发表于 2022-7-10 19:52
x=[]是那个del的结果


对象没有改变,还是那个列表,你看2#,id(x)两次得到的结果是一样的,证明他们地址一样,是同一个对象,del x[:]只不过把x的所有项全部删除了而已
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-10 20:11:23 | 显示全部楼层
咕咕鸭 发表于 2022-7-10 19:52
x=[]是那个del的结果

那反问你下,你怎么证明影响到x指向的对象了?

我上的代码不是明显证明了没有改变????
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-7-10 20:18:54 | 显示全部楼层
本帖最后由 ba21 于 2022-7-10 20:24 编辑

我想我知道你想说什么了。问题 没有描述清楚。

你是想说 [:]  切片应该是复制了 x中的内容对吧。 del x[:] 不应该删除 x原有的数据。

那只能告诉你,[:]在del中的应用不是你想的那样。它的功能指的是要删除元素的范围

y = x[:] 这才是复制一份赋值给新的对象。其实这里x[:]也是指复制内容的范围。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-10 21:18:31 | 显示全部楼层
ba21 发表于 2022-7-10 20:18
我想我知道你想说什么了。问题 没有描述清楚。

你是想说 [:]  切片应该是复制了 x中的内容对吧。 del x[ ...

谢谢,是我没讲清楚
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-7-10 21:19:03 | 显示全部楼层
临时号 发表于 2022-7-10 19:59
对象没有改变,还是那个列表,你看2#,id(x)两次得到的结果是一样的,证明他们地址一样,是同一个对象,del x ...

谢谢吖
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-28 16:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表