|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
为什么下面代码运行结果不是我想要的[{desc:1,link:11},{desc:2,link:12},{desc:3,link:13}],
而是非常奇怪的结果[{desc:3,link:13},{desc:3,link:13},{desc:3,link:13}]
,
求指点帮助谢谢
- p=[1,2,3]
- q=[11,12,13]
- items=[]
- item={}
- for i in range(len(p)):
- item['desc']=p[i]
- item['link']=q[i]
- items.append(item)
- print(items)
复制代码
这是python可变变量的一个坑。什么是可变变量,用最简单的话说就是内容改变而地址不变。详细的就不论述了,以后有机会单开帖吧。
item={}的确良一个地址,就叫它地址1吧。
第一次循环items为[地址1],这时地址1的内容为{desc:1,link:11}
第二次循环items为[地址1, 地址1],这时地址1的内容为{desc:2,link:12}
第三次循环items为[地址1, 地址1, 地址1],这时地址1的内容为{desc:3,link:13}
这样就得到你现在的结果。
如果你想得到预期的结果,这样改一下。
- p=[1,2,3]
- q=[11,12,13]
- items=[]
- item={}
- for i in range(len(p)):
- item = {'desc':p[i],'link':q[i]}
- items.append(item)
- print(items)
复制代码
对可变变量整体重新赋值则相当于不可变变量,会采用一个新的地址。
|
|