代码之家  ›  专栏  ›  技术社区  ›  sof

Python[duplicate]中快速嵌套列表的意外更新结果

  •  0
  • sof  · 技术社区  · 7 年前

    为什么第一个元素,但整个列不能在下面更新?

    >>> x=2*[2*[1]]
    >>> x
    [[1, 1], [1, 1]]
    >>> x[0][0]=2
    >>> x
    [[2, 1], [2, 1]]
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   U13-Forward    7 年前

    即使这是一个明确的重复,但使用 range :

    >>> x=[[1 for i in range(2)] for x in range(2)]
    >>> x
    [[1, 1], [1, 1]]
    >>> x[0][0]=2
    >>> x
    [[2, 1], [1, 1]]
    >>> 
    

    >>> x=[[1]*2 for x in range(2)]
    >>> x[0][0]=2
    >>> x
    [[2, 1], [1, 1]]
    >>>