python小白求助,明明赋值了,但第二次循环还是上一个值,详见描述?

新手上路,请多包涵

我在循环中明明已经给一个值赋了列表,但是使用方法remove后,似乎第二次循环就赋值无效了.见图.求解为何会这样,该如何解决?
imageimage

阅读 2.5k
2 个回答

q是列表,引用类型,具有可变性

  1. 在第一轮循环时,q取了个别名b。当b.remove(3),意味着q的内容也被改动。即q被指向的内容元素3也被移除(b,q操作同一份内容)
  2. 在第二轮循环时,此时q已经变为了[1,2,4],remove 值 3 显然不存在自然报错
conda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more
>>> q=[1,2,3,4]
>>> b=q
>>> b.remove(3)
>>> b
[1, 2, 4]
>>> q
[1, 2, 4]
>>>

b和q指向的是同一个list,对b的操作也会影响到q

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题