2014-02-09 75 views
0

我使用子列表創建連接4板,但下面的代碼是6x7板。我想改變它,以便它可以自定義爲用戶希望的大小。我需要一些幫助,因爲我不知道如何改變它。Python:連接4板

ttt_board = [ [ " ", " ", " ", " ", " ", " "," ", " "], 
       [ " ", " ", " ", " ", " "," ", " ", " "], 
       [ " ", " ", " ", " ", " ", " ", " ", " "], 
       [ " ", " ", " ", " ", " ", " ", " ", " "], 
       [ " ", " ", " ", " ", " ", " ", " ", " "], 
       [ " ", " ", " ", " ", " ", " ", " ", " "] ] 
+0

用戶輸入大小如何? –

+0

我問用戶他們想要多少行和列。 – user3161743

+0

你可能意味着使用列表理解:'ttt_board = [[ 「 」] * 8我在範圍內(6)]' – alfasin

回答

1

您需要動態生成的行和列:

board = [[" " for _ in range(col_count)] 
     for _ in range(row_count)] 
2

使用列表內涵。

[[" " for x in range(width)] for y in range(height)]](其中寬度和高度值的用戶輸入,當然)。

爲什麼這項工作?

首先,range函數生成兩個端點之間的整數。如果您省略第一個端點,則默認爲0.因此range(5)將給出[0,1,2,3,4]

列表解析生成基於兩點的列表:對於列表中的元素和,以此爲基礎的列表的長度的表達的表達。如上所示,它採用[x for y in z]的形式。

x是每個元素的表達 - 在這種情況下,一個恆定值。

y是一個值綁定到每個元素z,雖然在這種情況下,我們不使用它。

z是一個可迭代的綁定y(這是一種多餘的給予我說的最後一件事)。

對於涉及使用綁定一個更復雜的例子,考慮以下因素:

a = ["one", "two", "three", "four"]

b = [len(x) for x in a])

現在我們有b[3,3,5,4]