vin*_*dyz 4 python coding-style
我遇到了一段python list decclaration.我对它的行为感到有点困惑.可以somone请解释这个.感谢您的帮助.
>>> v = [[0]*2]*2
>>> v
[[0, 0], [0, 0]]
>>> v[1][1] = 23
>>> v
[[0, 23], [0, 23]]
>>> v[1][1] = 44
>>> v
[[0, 44], [0, 44]]
>>>
Run Code Online (Sandbox Code Playgroud)
该*系列表操作重复的内容,你可以在输出中清楚地看到.
但是,它不会复制元素,它只是复制对象引用.所以在这种情况下,两者[0,0 ]都有相同的底层列表对象,这应该可以解释这种现象.
要验证这一点,请尝试v[0] = [0,44]将新的(因而独立的!)列表对象分配给主列表的第一个元素; 然后重新尝试改变v[1][1].这次输出中只有一个条目会改变.