gpt4 book ai didi

python - 元素更改后列表不会更改

转载 作者:行者123 更新时间:2023-12-01 06:35:49 25 4
gpt4 key购买 nike

在尝试实现算法时,我无法通过函数使 python 列表发生变化。阅读完这个问题后,this StackOverflow answer向我建议。使用 [:] 来改变函数参数中传递的数组。

但是,如以下代码片段所示,当尝试更改列表 l 时,问题仍然存在。我期望输出为 Before: [1,2,3,4]
之后:[69, 69, 69, 69]
,但我取回了 l 的原始值,如下所示。

def mutate_list(a, b):
c = [69] * 4
a[:] = c[:2] # changed the elements, but array's still unchanged outside function
b[:] = c[2:]

if __name__ == '__main__':
l = [1, 2, 3, 4]
print("Before: {}" .format(l))
mutate_list(l[:2], l[2:])
print("After: {}" .format(l))

输出:

Before: [1, 2, 3, 4]
After : [1, 2, 3, 4]

对于为什么会发生这种情况有什么见解吗?

最佳答案

错误是你实际上没有传递 l 而是它的两片。您应该更改它,例如:

def mutate_list(a):
c = [69] * 4
a[:2] = c[:2]
a[2:] = c[2:]

if __name__ == '__main__':
l = [1, 2, 3, 4]
print("Before: {}" .format(l))
mutate_list(l)
print("After: {}" .format(l))

关于python - 元素更改后列表不会更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59675923/

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