在Python中按引用与值比较列表

2024-04-25 01:27:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在正在用3.2版本学习Python。在

给定两个列表变量,如何区分变量引用的是同一个列表还是两个单独的列表具有相同的值。在

例如:

>>> foo = [1,2,3,4]
>>> bar = foo
>>> foo.append(5)
>>> foo
[1, 2, 3, 4, 5]
>>> bar
[1, 2, 3, 4, 5]
>>> foo == bar
True

在上面的“foo”和“bar”显然引用了同一个列表。(可以在foo后面加上“5”并在bar中看到这种变化)。在

现在,让我们定义第三个列表,名为“其他”,具有相同的值:

^{pr2}$

它们看起来肯定是同一个列表,因为这里的比较运算符也返回True。但是如果我们修改“other”,我们可以看到这是一个不同的列表,其中任何一个变量的更改都不会影响另一个变量。在

>>> other.append(6)
>>> other == foo
False
>>> other
[1, 2, 3, 4, 5, 6]
>>> foo
[1, 2, 3, 4, 5]

我认为知道两个变量在结构上是相同的还是彼此的别名是有用的。但我怀疑我可能误解了语言的其他基本要素。在


Tags: 版本语言falsetrue列表定义foobar
1条回答
网友
1楼 · 发布于 2024-04-25 01:27:48

您可以使用^{} operator来确定对象标识:

>>> foo is bar
True
>>> foo is other
False

引用文档:

The operators is and is not test for object identity: x is y is true if and only if x and y are the same object. x is not y yields the inverse truth value.

检测两个变量是否引用同一个对象(如列表)的另一种方法是检查^{} function的返回值:

^{pr2}$

相关问题 更多 >