在python中对列表使用重复运算符*进行操作时,只是简单的进行了浅复制,内部的结构并没有复制过来,所以下面的例子结果是这样的:
-
>>> lists =[[]]*3 >>> lists [[],[],[]] >>> lists[0].append(3) >>> lists [[3],[3],[3]]
[[]]只是一个单元素列表,元素为一个空列表,执行重复运算之后,这三个元素都指向同一个空列表,修改lists中的任一个元素都将修改这个空列表,所以必须对是上面的代码进行修改。
-
>>> lists =[[]for i in range(3)] >>> lists[0].append(3) >>> lists[1].append(5) >>> lists[2].append(7) >>> lists [[3],[5],[7]]