15588686105 发表于 2023-9-20 16:59:44

del 函数是咋回事

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

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

我删除aa列表的元素,为什么字典中对应的values也会少了一个元素

isdkz 发表于 2023-9-20 16:59:49

del函数删除的是列表中的元素,而不是列表本身。在这个例子中, aa = g['ACT'] 将字典中'ACT'对应的值列表赋值给了变量aa。当我们使用 del aa 删除aa列表中的第一个元素时,实际上是删除了'ACT'对应的值列表中的第一个元素。由于字典中的值是列表,所以字典中的值也会发生相应的变化。因此,字典中对应的values也会少了一个元素。

15588686105 发表于 2023-9-20 17:16:59

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

同理 pop 也会这样吧

BSOD 发表于 2023-9-21 14:37:30

在Python的所有数据类型中, 可以分为两大类: 可变类型, 不可变类型.
可变类型: dict, set, list;
不可变类型: int, str, float, tuple, bool等.

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

In : b = a

In : del b

In : a
Out:

In : a.append(3)

In : b
Out:

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

15588686105 发表于 2023-9-22 10:36:23

BSOD 发表于 2023-9-21 14:37
在Python的所有数据类型中, 可以分为两大类: 可变类型, 不可变类型.
可变类型: dict, set, list;
不可变 ...

好的老哥
页: [1]
查看完整版本: del 函数是咋回事