PYTHON错误——”赋值“ 和 ”拷贝“
# 关于自己写的代码有个逻辑没有问题,但是代码有问题的错误。本质上是关于“拷贝”和“赋值”的错误。 # 我想将每次大循环后x["x1"]的结果保存到a中。 # 即:a: [[0, 1], [0, 1, 0, 1]] # 但是我得到的结果:[[0, 1, 0, 1], [0, 1, 0, 1]] ''' python 列表的赋值:a = [1,2,3], b = a;相当于a和b都指向同一块内存空间;即指针相同; python 列表的拷贝:a = [1,2,3], b = a;相当于b在内存中开辟了另一块内存空间,存储的值为a列表的值; ''' import copy print("-"*100, "“赋值”代码", "-"*100) # TODO 1. “赋值”代码 x = { "x1": [], "x2": [] } a = [] for i in range(2): for j in range(2): x["x1"].append(j) a.append(x["x1"]) for i in range(len(a)): print("id(a[i])", id(a[i])) print("value(a[i])", a[i]) # TODO 2. “拷贝”代码 print("-"*100, "“拷贝”代码", "-"*100) x = { "x1": [], "x2": [] } a = [] for i in range(2): for j in range(2): x["x1"].append(j) a.append(copy.copy(x["x1"])) for i in range(len(a)): print("id(a[i])", id(a[i])) print("value(a[i])", a[i]) ''' ---------------------------------------------------------------------------------------------------- “赋值”代码 ---------------------------------------------------------------------------------------------------- id(a[i]) 3047084190464 value(a[i]) [0, 1, 0, 1] id(a[i]) 3047084190464 value(a[i]) [0, 1, 0, 1] ---------------------------------------------------------------------------------------------------- “拷贝”代码 ---------------------------------------------------------------------------------------------------- id(a[i]) 3047084210816 value(a[i]) [0, 1] id(a[i]) 3047084190464 value(a[i]) [0, 1, 0, 1] # 解释 3047084190464 == 3047084190464 :第一次,赋值相当于多个引用,指针 3047084210816 == 3047084190464 :第二次,拷贝相当于新开辟空间存储 '''
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2020-08-18 PYTHON-未知错误