gpt4 book ai didi

python - 函数内变量被覆盖

转载 作者:行者123 更新时间:2023-12-01 02:45:22 26 4
gpt4 key购买 nike

我在 Python 2.7 中有以下代码

abc=[[1,2,3],[0,1,2]]
def make_change(some_list):
for i in range(len(some_list)):
if some_list[i][0]==0:
some_list[i]=[]
return some_list

new_list=make_change(abc)

print abc
print new_list

我的理解是它应该产生以下输出。

[[1,2,3],[0,1,2]]

[[1,2,3],[]]

但是Python实际上产生了

[[1,2,3],[]] 

[[1,2,3],[]]

我错过了什么吗?

最佳答案

您可以通过复制列表并将其传递给函数来防止此问题:

abc=[[1,2,3],[0,1,2]]
def make_change(some_list):
for i in range(len(some_list)):
if some_list[i][0]==0:
some_list[i]=[]
return some_list

new_list=make_change(abc[:])

print abc
print new_list

改变的部分:

new_list=make_change(abc[:])

发生这种情况的原因是 Python 通过引用传递列表,因此也会对原始列表进行更改。使用 [:] 创建浅拷贝,这足以防止这种情况发生。

关于python - 函数内变量被覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45313212/

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