Python 解包列表并更改元素

Python 解包列表并更改元素,python,Python,以以下两个案例为例: >>> a, b = [[None, None]]*2 >>> print(a, b) [None, None] [None, None] >>> a[0] = 1 >>> print(a, b) [1, None] [1, None] & 我不明白为什么第一个案例没有表现出与第二个案例相同的行为,因为[[None,None]]*2=[[None,None],[None,None]]返回Tru

以以下两个案例为例:

>>> a, b = [[None, None]]*2
>>> print(a, b)

[None, None] [None, None]


>>> a[0] = 1
>>> print(a, b)

[1, None] [1, None]
&

  • 我不明白为什么第一个案例没有表现出与第二个案例相同的行为,因为
    [[None,None]]*2=[[None,None],[None,None]]
    返回
    True
  • 我怀疑这是因为当列表相乘时,新组件将指向第一个组件的值。这有多理智

  • 我怎样才能使第一个案例的行为和第二个一样

  • 是的,谢谢。建议的解决方案是:
    a,b=[[None,None]for uuu.in range(2)]
    。您可以使用id()方法
    a,b=[[None,None]]*2a[0]=1打印(a,b)打印(id(a[0]),id(b[0])
    >>> a, b = [[None, None], [None, None]]
    >>> print(a, b)
    
    [None, None] [None, None]
    
    
    >>> a[0] = 1
    >>> print(a, b)
    
    [1, None] [None, None]