gpt4 book ai didi

python - 对于 string_list : s = func(s) can't change string s 中的 s

转载 作者:行者123 更新时间:2023-12-01 21:33:53 29 4
gpt4 key购买 nike

def func(s):
s = s + " is corrected"
return s

string_list = ["She", "He"]

for s in string_list:
s = func(s)

在此之后,string_list 没有被修改,但是,

for i in range( len(string_list) ):
string_list[i] = func(string_list[i])

这行得通,为什么会这样?

最佳答案

字符串是不可变的。你的代码

string_list[i] = func(string_list[i])

不会更改存储在 string_list[i] 中的值,它会为 string_list[i] 分配一个新值。

类似的代码

s = func(s)

不会更改s的值,它会创建一个新值并将其分配给s


将此与实际突变进行对比,您的函数确实更改它正在操作的值(而不是创建一个新值)。 list.append 对列表应用突变,所以像这样:

list_of_lists = [[1], [2], [3]]

for lst in list_of_lists:
lst.append('new')

实际上会改变 list_of_lists。这是因为您正在提取值(分别为 [1][2][3])并创建一个改变它。

关于python - 对于 string_list : s = func(s) can't change string s 中的 s,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62254054/

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