python空列表技巧

cva*_*val 2 python list

可能重复:
Python列表混乱

我有一个关于Python列表的小问题:

为什么会这样?

x = [[]] * 4
x[0].append('x') -> [['x'], ['x'], ['x'], ['x']]
Run Code Online (Sandbox Code Playgroud)

ami*_*mit 6

[]正在复制相同的实例,所以当你附加到第一个实例时'x',你实际上将它附加到所有 - 因为它们都是同一个对象!

正确的方法是每次都显式创建一个新的列表实例:

x = [[] for _ in range(4)]
Run Code Online (Sandbox Code Playgroud)