[英]What's the difference between these lists?
在我的計算機科學入門課上,我們剛剛編寫了一個程序來創建一個井字游戲板,我制作游戲板的方式是這樣的;
game_board = [[', ', '], [', ', '],[', ', ']]
我在互聯網上查看了類似的問題,並看到了另一種寫法
different_board = [[' '] * 3 for row in range(3)]
我想知道如果寫出來,第二個與第一個相比會是什么樣子,它們是相同的還是不同的?
你可以問問 Python:
a = [[' ', ' ', ' '], [' ', ' ', ' '], [' ', ' ', ' ']]
b = [[' '] * 3 for row in range(3)]
print(a == b)
結果:
True
另外,請注意:
c = c = [[' '] * 3] * 3
d = [[' ' for _ in range(3)] for _ in range(3)]
print(a == c)
print(a == d)
它們看起來相同,但它們只是相似 - 嘗試修改c
,你會明白為什么:
c[0][1] = 'x'
print(c)
結果:
[[' ', 'x', ' '], [' ', 'x', ' '], [' ', 'x', ' ']]
這是對同一個列表的三個引用! d
的定義是正確的,但大多數程序員並不清楚為什么* 3
有這個問題而for _ in range(3)
不會,所以我會遠離這些“有效”的定義。
你可以看到自己的樣子:
print(b)
結果:
[[' ', ' ', ' '], [' ', ' ', ' '], [' ', ' ', ' ']]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.