带列表的Python实例行为

带列表的Python实例行为,第1张

概述考虑Python中的以下实例行为.def change(elements): elements[0] = 888 elements = [-3, -1, -2, -3, -4] print(elements[0]) numbers = [1, 4, 5] print(numbers[0]) change(numbers) prin

考虑Python中的以下实例行为.

def change(elements):    elements[0] = 888    elements = [-3,-1,-2,-3,-4]    print(elements[0])numbers = [1,4,5]print(numbers[0])change(numbers)print(numbers[0])print(numbers)

下面的Python代码段打印出来

1-3,888 [888,5]

不应该打印

1,[-3,-4]

为什么列表中的元素会被成功覆盖,而不是整个列表对象?最佳答案该列表作为函数的引用传递.因此列表在全局空间和函数之间共享.第一个更改修改列表,并且更改将反映在两个空格中.但是你做了并分配给List变量.这会在函数中创建一个新列表.原始列表存在于全局空间中,但在函数中不再存在.因此,从该点开始对函数中的列表所做的所有更改仅在函数内可见.

考虑这个实例的另一种方式是列表是一种容器.函数的第一行更改容器中的内容.第二行(赋值)实际上更改了您正在使用的容器.对于列表而言,这也适用于任何对象.这就是@Chris_Rands在评论中给出的解决方案有效的原因:它修改了容器中的内容,它不会更改容器.

总结

以上是内存溢出为你收集整理的带列表的Python实例行为全部内容,希望文章能够帮你解决带列表的Python实例行为所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/1205991.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存