Py学习  »  Python

python-如何检查/发现列表有引用?

Vivek Gani • 6 年前 • 2293 次点击  

python中比较混乱的一个方面是实例化一个列表列表(假设一个列表没有使用numpy)——例如,如果一个人试图通过简单的乘法来实现它,那么最终会得到引用副本:

In [1]: a = [[0] * 4] * 4
In [2]: a
Out[2]: [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

In [3]: a[0][1] = 1
In [4]: a
Out[4]: [[0, 1, 0, 0], [0, 1, 0, 0], [0, 1, 0, 0], [0, 1, 0, 0]]

如其他文章所述 this one ,没有任何引用的正确实例化方法如下:

In [5]: b = [[0 for i in range(4)] for i in range(4)]
In [6]: b         
Out[6]: [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

In [7]: b[0][1] = 1
In [8]: b                                           
Out[8]: [[0, 1, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

问题是,假设一个人确实定义了他们的列表 a ,是否有方法检查数组,使其显示正在使用引用?仅仅打印数组不会显示引用。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43486
文章 [ 2 ]  |  最新文章 6 年前