Python3列表未更新问题求助:预期[1,1]却得[0,0]
为什么Python中修改a、b后result列表没更新?
嘿,我帮你把这个问题掰扯清楚~
首先你遇到的这个情况,核心是Python中不可变类型的赋值逻辑在搞事情。咱们一步步拆解:
当你执行result=[a,b]的时候,你其实是把a和b当时的**具体数值(也就是0)**存进了result列表里,而不是把a、b这两个变量“绑定”到列表中。因为整数(int)是Python里的不可变类型——简单说就是,当你之后给a或b赋新值时,并不是修改原来那个0的数值,而是让a、b这两个变量指向了一个全新的整数对象(比如循环后的1)。但列表result里的元素还是当初存的那个旧的0,自然不会跟着变。
你单独打印a和b时输出正常,是因为这两个变量已经指向了新的数值;但result列表里的元素还停留在初始化时的0,所以打印出来还是[0,0]。
怎么解决?
很简单,在循环结束后重新给result赋值,把a和b当前的最新值放进列表里就行。比如补全你的代码逻辑:
a=0 b=0 arrayA=[7,9,1] arrayB=[2,9,5] result=[a,b] # 假设你的循环是统计对应元素大小的次数(补全循环逻辑) for x, y in zip(arrayA, arrayB): if x > y: a += 1 elif x < y: b += 1 # 循环结束后更新result result = [a, b] print(result) # 现在就能得到预期的[1,1]啦
这样做的原因是,重新赋值时,我们把a和b当前指向的最新数值(1)存入了列表,自然就能得到正确结果。
内容的提问来源于stack exchange,提问作者PN07815
相关产品推荐
相关产品推荐

