The_SUP 2024-08-17 17:16 采纳率: 0%
浏览 1

Python--为什么在arr上修改值会影响源数值

源码如下:

shadow = [{
"name": "admin",
"password": "admin",
"age": "18",
},
{
"name": "xys",
"password": "123132",
"age": "18",
}
]

arr1 = list(filter(lambda x:x["name"] == "xys", shadow))
arr1[0].update({
"name": "yourself"
})
print(arr1) # 输出 [{'name': 'yourself', 'password': '123132', 'age': '18'}]
print(shadow[1]) #输出 {'name': 'yourself', 'password': '123132', 'age': '18'}

问:为什么在arr上修改值会影响源数值

  • 写回答

2条回答 默认 最新

  • 一直免费一直爽 2024-08-17 17:16
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    这是因为在Python中,列表和字典都是可变对象。当你使用filter()函数创建一个新的列表arr1时,它包含了对原始列表shadow中的字典的引用。因此,当你修改arr1中的字典时,实际上是在修改原始列表shadow中的字典。

    在这个例子中,arr1[0]是对shadow[1]的引用,所以当你更新arr1[0]时,shadow[1]也会被更新。

    评论

报告相同问题?

问题事件

  • 创建了问题 8月17日

悬赏问题

  • ¥66 换电脑后应用程序报错
  • ¥50 array数据同步问题
  • ¥15 pic16F877a单片机的外部触发中断程序仿真失效
  • ¥15 Matlab插值拟合差分微分规划图论
  • ¥15 keil5 target not created
  • ¥15 C/C++数据与算法请教
  • ¥15 怎么找志同道合的伙伴
  • ¥20 如何让程序ab.eXe自已删除干净硬盘里的本文件自己的ab.eXe文件
  • ¥50 爬虫预算充足,跪巨佬
  • ¥15 滑块验证码拖动问题悬赏