首页 > 解决方案 > 包含对列表的引用但引用列表何时被删除的变量?

问题描述

据我了解,将列表变量分配给变量将创建一个引用,如 C 中的指针。

>>> l1 = ['joe biden', 'donald trump', 'justin trudeau']
>>> l2 = l1
>>> l1
['joe biden', 'donald trump', 'justin trudeau']
>>> l2
['joe biden', 'donald trump', 'justin trudeau']
>>> l1.append('barack obama')
>>> l1
['joe biden', 'donald trump', 'justin trudeau', 'barack obama']
>>> l2
['joe biden', 'donald trump', 'justin trudeau', 'barack obama']
>>> 

这是意料之中的。

但事情是这样的:

>>> del l1
>>> l1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'l1' is not defined
>>> l2
['joe biden', 'donald trump', 'justin trudeau', 'barack obama']
>>> l1.append('obama')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'l1' is not defined
>>> l2.append('obama')
>>> l2
['joe biden', 'donald trump', 'justin trudeau', 'barack obama', 'obama']
>>> 

l1 被删除了,那么 l2 指向什么?现在看来 l2 包含自己的列表。为什么会这样?

标签: pythonpython-3.xreferencedel

解决方案


l2 指向 l1 而不是 l1 的内存位置。因此,如果 l1 被删除,你仍然有 l2 指向同一个列表


推荐阅读