首页 > 解决方案 > 通过引用传递时验证python列表中完全相同的变量

问题描述

采用嵌套列表: list = [[foo, foo], [foo, foo]], [foo, foo]].

我传递list给一个函数,但我也分别通过引用相同的函数传递第二个嵌套列表作为list[1].

然后,在随机索引处的函数中,我[foo, foo]list.

是否有可能确定我传递给函数的那个​​是哪一个[foo, foo]list

换句话说,我想[foo, foo]在 now-modified 中获取我之前单独传递的原始索引的新索引list

标签: pythonpass-by-reference

解决方案


您正在寻找的是is,它测试两个变量是否引用同一个对象。

在 iPython shell 中演示:

In [1]: list = [['foo', 'foo'], ['foo', 'foo'], ['foo', 'foo']]

In [2]: sublist = list[1]

In [3]: sublist is list[1]
Out[3]: True

In [5]: list.insert(1, ['foo', 'foo'])

In [6]: list
Out[6]: [['foo', 'foo'], ['foo', 'foo'], ['foo', 'foo'], ['foo', 'foo']]

In [7]: list.insert(1, ['foo', 'foo'])

In [8]: list
Out[8]: 
[['foo', 'foo'],
 ['foo', 'foo'],
 ['foo', 'foo'],
 ['foo', 'foo'],
 ['foo', 'foo']]

In [9]: sublist is list [1]
Out[9]: False

In [10]: for count, l in enumerate(list):
   ...:     if l is sublist:
   ...:         print(count)
   ...: 
3

In [11]: sublist is list[3]
Out[11]: True

推荐阅读