gpt4 book ai didi

python - 添加到列表时,为什么 Python 复制值而不是指针?

转载 作者:行者123 更新时间:2023-11-28 19:40:37 26 4
gpt4 key购买 nike

我试图做的(C 代码):

int a = 2, b = 3, c = 4;

int* arr[3] = {&a, &b, &c};

for (int i = 0; i < 3; ++i) {
if (*(arr[i]) > 1) {
*(arr[i]) = 1
}
}

我期待 Python 对这段代码执行类似指针的行为。

>>> a = 2
>>> b = 3
>>> c = 4
>>> for x in [a, b, c]:
... if x > 1:
... x = 1
...
>>> a,b,c
(2, 3, 4)

如何在 Python 中实现类似 C 代码的行为?

最佳答案

Python 没有那种意义上的指针。

Python 变量是绑定(bind)到一个值而不是内存中某个位置的名称,因此更改一个变量的值不会更改具有相同值的另一个变量的值。

你可以实现一些你想要的东西 using locals :

>>> a = 2
>>> b = 3
>>> c = 4
>>> for x in 'a','b','c':
... if locals()[x] > 1:
... locals()[x] = 1
...
>>> a
1

但是,我强烈建议不要这样做。如果您发布另一个问题来解释您尝试解决的问题,您将获得 more "Pythonic"这样做的方式。

这可能只是将您的值存储在 dict 中的情况:

>>> vals = { 'a' : 2, 'b' : '3', 'c' : 4 }
>>> for key,value in vals.items():
... if value > 1:
... vals[key] = 1
...
>>> vals
{'a': 1, 'c': 1, 'b': 1}

关于python - 添加到列表时,为什么 Python 复制值而不是指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8743072/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com