先看错误示范:
1 | person = {'name': '', 'ids': 0} |
可能一眼看不出结果为什么不是自己相象的那样,我们在中间穿插一些print
来 debug 下。
1 | person = {'name': '', 'ids': 0} |
我们可以看到 x 的 id 在循环中并没有发生变化,但是 x 的值却在循环中因为x['ids'] = i
的赋值发生了变化。这样导致的结果便是 team 列表中3 个 append
x 的元素都会变成循环中最后一次的赋值。究其原因就是在循环中 x 一直在引用 person的值。
解决方法1:
1 | from copy import deepcopy |
解决方法2:
1 | team = [] |