当我们想初始化一个多维矩阵用来存储信息时,存在这样两种看起来相同的初始化赋值方式:
my_board = [[""] * 8] * 8
my_board[0][0] = "♜"
print(my_board)
for item in my_board:
print(id(item))
my_board = [["" for _ in range(8)] for _ in range(8)]
my_board[0][0] = "♜"
print(my_board)
for item in my_board:
print(id(item))
看起来是一样的意思,但实际上结果却完全不同,这里我们输出一下他们的id结果:
[['♜', '', '', '', '', '', '', ''], ['♜', '', '', '', '', '', '', ''], ['♜', '', '', '', '', '', '', ''], ['♜', '', '', '', '', '', '', ''], ['♜', '', '', '', '', '', '', ''], ['♜', '', '', '', '', '', '', ''], ['♜', '', '', '', '', '', '', ''], ['♜', '', '', '', '', '', '', '']]
140023830660296
140023830660296
140023830660296
140023830660296
140023830660296
140023830660296
140023830660296
140023830660296
[['♜', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '']]
140023830660616
140023830660552
140023830660424
140023830660360
140023830660808
140023830661896
140023830661960
140023830662024