2017-08-30 45 views
-2
Grid = ["A1","A2","A3","B1","B2","B3","C1","C2","C3"] 
    print("This is the grid.") 
    for i in range(3): 
    print("\t".join(Grid[(i*3):(i*3+3)])) 

我正在尋找一種方法來在Python中創建一個2D 3x3網格,並發現它。我想使用它,但我不確定第4行實際上是如何工作的,除了「\ t」。不確定某些代碼是如何工作的

幫助非常感激,謝謝:)

回答

1

String.join方法結合的集合與定義的分隔符。在您的示例中,\t是一個選項卡。所以你將在新字符串中的項目之間有一個選項卡。

>>> Grid = ["A1","A2","A3","B1","B2","B3","C1","C2","C3"] 
>>> for i in range(3): 
    print("\t".join(Grid[(i*3):(i*3+3)])) 


A1 A2 A3 
B1 B2 B3 
C1 C2 C3 

>>> for i in range(3): 
    print(" --- ".join(Grid[(i*3):(i*3+3)])) 


A1 --- A2 --- A3 
B1 --- B2 --- B3 
C1 --- C2 --- C3 

這裏有一個簡短的教程String.join

+0

Downvote ?!這讓我懷疑民主。這是現在最準確和最易理解的答案。 – cezar

+0

@cezar總會有仇敵..我也想知道爲什麼它會陷入低谷。感謝您的時間評論這 – Vinny

+0

也許人們可以解釋'(i * 3):(i * 3 + 3)'的評價,它在每個迭代步驟中對列表進行切片:[0:3],[3:6] ,[6:9]。但是從問題看來,OP似乎並不瞭解'join'方法,所以這是一個正確的答案。 – cezar

0

Grid是一個列表。方括號用於訪問列表的元素。 如果在方括號中有冒號:,這稱爲slicing,它用於訪問多個元素。例如x[1:4]挑選列表中的第二個至第四個元素。

1

讓打破它拆開:

Grid[(i*3):(i*3+3)] 

這是使用列表分片。讓我們更容易,說我是0,那麼這是

Grid[0:3] 

這是指數0到2的元素,所以該列表的前三個元素。如果我是一個,它的

Grid[3:6] 

元素索引3到5,中心3元素。

"\t"是製表符,join()函數將前一個字符串放在參數中列表的每個元素之間。因此,

print("\t".join(Grid[(i*3):(i*3+3)])) 

打印由製表符分隔的列表中的三個連續元素,然後開始一個新行。

包括for -loop,該方案顯示三行左上角排列在一個3x3格3個元素,"A1""C3"在右下:

A1  A2  A3 
B1  B2  B3 
C1  C2  C3 
0

OK,讓我們打破for循環下來:

for i in range(3): 
    print("\t".join(Grid[(i*3):(i*3+3)])) 

i這裏只是用來遍歷上述名單的目的。在for循環中的print()語句中,join()方法將元素Grid[(i*3):(i*3+3)]與選項卡連接起來。由於i在循環的迭代中將其值從0更改爲3,所以來自列表的參考切片將分別爲Grid[0:3],Grid[3:6],Grid[6:9]。然後,由於print()語句中的默認end='\n',它將打印每個切片中的值,並由製表符分隔,然後再打印換行符。

希望這有助於!

0

您在Grid列表中有九個元素。 for循環迭代三次,每次從Grid中選擇三個連續的元素並使用製表符打印它們。在最後一行Grid[(i*3):(i*3+3)]部分選擇三個元素。我們可以使用列表切片從列表中選擇元素。使用list_name[0:3]可以選擇列表中的多個元素。這將選擇前三個元素。請注意,索引3的元素不會被選中。這個切片的結果是一個列表。

然後使用join函數將所有元素轉換爲單個字符串。連接接受一個列表或元組的詞和一個分隔符,可以說在連續的列表元素之間播種。