在python中对列表使用重复运算符*进行操作时,只是简单的进行了浅复制,内部的结构并没有复制过来,所以下面的例子结果是这样的:

  1. >>> lists =[[]]*3
    >>> lists
    [[],[],[]]
    >>> lists[0].append(3)
    >>> lists
    [[3],[3],[3]]
        [[]]只是一个单元素列表,元素为一个空列表,执行重复运算之后,这三个元素都指向同一个空列表,修改lists中的任一个元素都将修改这个空列表,所以必须对是上面的代码进行修改。
  1. >>> lists =[[]for i in range(3)]
    >>> lists[0].append(3)
    >>> lists[1].append(5)
    >>> lists[2].append(7)
    >>> lists
    [[3],[5],[7]]
05-06 03:43