加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

带列表的Python实例行为

发布时间:2020-12-16 22:27:08 所属栏目:Python 来源:网络整理
导读:考虑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]

考虑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在评论中给出的解决方案有效的原因:它修改了容器中的内容,它不会更改容器.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读