kakahzw 发表于 2020-6-1 23:03:58

del 的用法问题

>> a = b =
>>> a

>>> b

>>> del a
>>> a

>>> b


为什么b没有用del语句也会删除??

Twilight6 发表于 2020-6-1 23:11:10

本帖最后由 Twilight6 于 2020-6-1 23:23 编辑

因为 a , b 两个 '别名'都是指向列表 即 a 是 列表 的'外号'b 也是 的'外号' 他们指向的都是同一个 '人'

当拥有这个'外号'的'人'发生了变化,那么和这个'人'关联的一切也会发生改变,因为他们都是指着这个人

上面这样打比方不懂会不会更容易理解些,你也可以用 Python 内置函数 id() 来查看他们的 id 地址是否相同,如果相同,那么del 删除了这个列表,就等于直接删除了他的 id 地址

a = b =
print(id(a))
print(id(b))

xiaosi4081 发表于 2020-6-2 07:06:08

del a[你要删除的元素编号]

花粉 发表于 2020-6-2 20:55:12

因为a跟b指向同一个地址,修改a后b也会跟着改变,需要用分片表达式复制序列[:]
>>> a =
>>> b = a[:]
>>> a

>>> b

>>> del a
>>> a

>>> b

>>>

kakahzw 发表于 2020-6-2 21:10:21

Twilight6 发表于 2020-6-1 23:11
因为 a , b 两个 '别名'都是指向列表 即 a 是 列表 的'外号'b 也是 的' ...

谢谢,大概懂了

kakahzw 发表于 2020-6-2 21:17:57

花粉 发表于 2020-6-2 20:55
因为a跟b指向同一个地址,修改a后b也会跟着改变,需要用分片表达式复制序列[:]
>>> a =
>>> b...

谢谢,大概懂了
页: [1]
查看完整版本: del 的用法问题