将指针传递给Python中的列表

bgc*_*ode 4 python pointers list

有没有办法将指针传递给列表,所以我可以 update_list(list, data)

而不是必须做 list = update_list(list, data)

无论这是否可行,在这种情况下什么是可取的和Pythonic?

Joh*_*web 10

我建议从C++的角度阅读Python变量名的语义:

所有变量都是引用

这是对整篇文章的过度简化,但是这(以及a list是一种可变类型的理解)应该可以帮助您理解以下示例的工作原理.

In [5]: def update_list(lst, data):
   ...:     for datum in data:
   ...:         lst.append(datum)
   ...:         

In [6]: l = [1, 2, 3]

In [7]: update_list(l, [4, 5, 6])

In [8]: l
Out[8]: [1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

您甚至可以使用extend()方法缩短它:

In [9]: def update_list(lst, data):
   ...:     lst.extend(data)
   ...:       
Run Code Online (Sandbox Code Playgroud)

这实际上可能会消除您的功能需求.

注意: list对于变量名称,它是内置的,因此是一个糟糕的选择.