鱼C论坛

 找回密码
 立即注册
查看: 2146|回复: 4

[已解决]del 函数是咋回事

[复制链接]
发表于 2023-9-20 16:59:44 | 显示全部楼层 |阅读模式

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

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

x
g = {'ACT': ['CTG', 'CTA'], 'GAC': ['ACT']}
print(g)
aa = g['ACT']
del aa[0]
print(aa,g)

输出:
1:{'ACT': ['CTG', 'CTA'], 'GAC': ['ACT']}
2:['CTA']
      {'ACT': ['CTA'], 'GAC': ['ACT']}

我删除aa列表的元素,为什么字典中对应的values也会少了一个元素
最佳答案
2023-9-21 14:37:30
在Python的所有数据类型中, 可以分为两大类: 可变类型, 不可变类型.
可变类型: dict, set, list;
不可变类型: int, str, float, tuple, bool等.

可变类型的特点: 在数据赋值时, 通常采用内存标签引用的方式进行, 也就是说, 被赋值的两个变量数据引用的同一个, 任何变动都会导致两个变量同时变化.
In [1]: a = [1, 2]

In [2]: b = a

In [3]: del b[0]

In [4]: a
Out[4]: [2]

In [5]: a.append(3)

In [6]: b
Out[6]: [2, 3]

不可变类型特点: 在数据被赋值后, 遵循写时copy原则(一旦数据发生变动, 则在内存中重新开辟新的空间), 当然也存在特殊情况, 比如Python自带的缓存池和tuple的特殊性

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-9-20 16:59:49 | 显示全部楼层
del函数删除的是列表中的元素,而不是列表本身。在这个例子中, aa = g['ACT'] 将字典中'ACT'对应的值列表赋值给了变量aa。当我们使用 del aa[0] 删除aa列表中的第一个元素时,实际上是删除了'ACT'对应的值列表中的第一个元素。由于字典中的值是列表,所以字典中的值也会发生相应的变化。因此,字典中对应的values也会少了一个元素。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-20 17:16:59 | 显示全部楼层
isdkz 发表于 2023-9-20 16:59
del函数删除的是列表中的元素,而不是列表本身。在这个例子中, aa = g['ACT'] 将字典中'ACT'对应的值列表 ...

同理 pop 也会这样吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-9-21 14:37:30 | 显示全部楼层    本楼为最佳答案   
在Python的所有数据类型中, 可以分为两大类: 可变类型, 不可变类型.
可变类型: dict, set, list;
不可变类型: int, str, float, tuple, bool等.

可变类型的特点: 在数据赋值时, 通常采用内存标签引用的方式进行, 也就是说, 被赋值的两个变量数据引用的同一个, 任何变动都会导致两个变量同时变化.
In [1]: a = [1, 2]

In [2]: b = a

In [3]: del b[0]

In [4]: a
Out[4]: [2]

In [5]: a.append(3)

In [6]: b
Out[6]: [2, 3]

不可变类型特点: 在数据被赋值后, 遵循写时copy原则(一旦数据发生变动, 则在内存中重新开辟新的空间), 当然也存在特殊情况, 比如Python自带的缓存池和tuple的特殊性
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-9-22 10:36:23 | 显示全部楼层
BSOD 发表于 2023-9-21 14:37
在Python的所有数据类型中, 可以分为两大类: 可变类型, 不可变类型.
可变类型: dict, set, list;
不可变 ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-24 08:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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