簡體   English   中英

這些列表有什么區別?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM