Python的一个坑

博主 创建于 2015-04-03

需要生成一个二维数组,一个elegant的做法是使用数组自带的乘法,结果生成的二维数组表现有点奇怪:

>>> a=[[]]*3
>>> a[0].append(1)
>>> print(a)
[[1], [1], [1]]
>>> 

从原理上来解释可以明白,因为[[]]*3得到的a实际上是一个数组,里面存放了同一对象的3个引用,对其中任何一个引用的操作都会改变对象的值。

操作: 评论

除非注明,ifconfiger博客文章均为原创,禁止出于商业目的全文转载。个人转载时,请以链接形式标明本文地址。

本文地址:https://ifconfiger.com/page/asshole-of-python

nomaka 2015-11-12 10:03 回复
from itertools import repeat
a = [[] for i in repeat(None, n)]
fzlee 回复 nomaka 2015-11-13 16:42 回复
还是大神厉害