Python把同一個對象循環賦值給另外一個變量,修改一個對象,其他對象也修改了
>>> row=['_'] * 3 >>> board = [] >>> for i in range(3): ... board.append(row) ... >>> row ['_', '_', '_'] >>> board [['_', '_', '_'], ['_', '_', '_'], ['_', '_', '_']] >>> board[2][1]='A' >>> row ['_', 'A', '_'] >>> board [['_', 'A', '_'], ['_', 'A', '_'], ['_', 'A', '_']] #3個子對象都被修改了 >>>
如果不想復制對象,可以在循環賦值前初始化下被賦值的變量
>>> board = [] >>> for i in range(3): ... row=['_'] * 3 #循環賦值前,初始化下變量 ... board.append(row) ... >>> board [['_', '_', '_'], ['_', '_', '_'], ['_', '_', '_']] >>> row ['_', '_', '_'] >>> board[2][0] = 'X' >>> board [['_', '_', '_'], ['_', '_', '_'], ['X', '_', '_']] >>> row ['X', '_', '_'] >>>