在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]]