2016-03-16 67 views
2

說我有:在數組數組內訪問數組的行?

H = [array(a), array(b), array(c)...] 

a = [[1,2,3,4,5,6], 
    [11,22,33,44,55,66], #row 1 of H[0] 
    [111,222,333,444,555,666]] 
b = [[7,8,9,0,1,2], 
    [77,88,99,00,11,22], 
    [777,888,999,000,111,222]] 
c = ... 

我要訪問的行1的H [0],但隨後移動到[1]等H內訪問的行。

我的問題(S):

1)如何我呼籲的H [0] 1列?

2)我怎麼那麼,在H [0]通過所有行會後,做一個循環運行到H [1]?

我知道我需要像

for i in range(len(H)): 
    do stuff to rows until the last row in H[i] 
    move onto H[i+1] 
    do same stuff 
    stop when (criteria here reached) 

所有幫助表示讚賞。謝謝。

編輯:我現在知道我可以通過H[0][1]訪問這個,但我實際上需要在每一行數組中的第0列值。所以,我需要從H[0][1]11。我該怎麼做呢?

+0

的H [0]第1行應該簡單地H [0] [1],不是嗎? –

+0

我絕對沒有意識到.. – layces

回答

2
H = [a, b, c] 

,對嗎?如果是,則答案:

1)

H[0][1] # 0 - "a" array; 1 - row with index 1 in "a" 

2)

for arr in H: # for array in H: a,b,c,... 
    for row in arr: # for row in current array 
     # do stuff here 

UPD:

再舉一個例子示出了通過陣列進行迭代,其中的行和元素:

a = [[1, 2], 
    [3, 4]] 
b = [[5, 6], 
    [7, 8]] 


H = [a, b] 

for arr_i, arr in enumerate(H): 
    print('array {}'.format(arr_i)) 

    for row_i, row in enumerate(arr): 
     print('\trow {}'.format(row_i)) 

     for el in row: 
      print('\t{}'.format(el)) 

輸出:

array 0 
    row 0 
    1 
    2 
    row 1 
    3 
    4 
array 1 
    row 0 
    5 
    6 
    row 1 
    7 
    8 
+0

對於第二部分,我將如何區分我的行爲/我在這兩者之間做了什麼?因此,如果我有'H [i] [j]'和'對於H中的arr:'對'i'採取行動,但對於arr中的行:'對'j'採取行動,我很困惑我究竟在哪裏放置我的'i + = 1'或'j + = 1' @germn – layces

+0

@TC,在大多數情況下,你不需要i,j。 Python不是C:在Python中,你使用列表中的對象而不是索引。如果你確實需要元素的索引,你可以使用enumerate(),參見:http://stackoverflow.com/a/522578/1113207 –

+0

好吧,所以我不恰當地命名我自己的東西,所以起初我沒有得到一個適當的娛樂,但現在我是!我最後一個問題仍然是:我怎麼具體只調用每行的第一列值?例如:輸出示例中的'1','3','5','7'?我不知道他們是什麼/叫做/,使用'el','row_i'或'row',和'arr_i'或'arr'? – layces

1

什麼:

for array in H: 
    for row in array: 
     # do stuff 

這個循環在當前陣列完成後自動移動到下一個陣列。

如果您需要數組索引則是這樣的:

for array in H: 
    for i, row in enumerate(array): 
     for j, value in enumerate(row): 
      # do stuff 
+0

嗯,那麼我會把我的休息放在這裏?它會在第一個for循環的結尾嗎?或者,將所有這些放在「while:」中會更好嗎? – layces

+0

你想休息一下?你沒有在你的問題中提到它。 –

+0

我需要它停止在我標記爲'stop when(criteria reached here)'時停止的點。並且非常感謝你爲答案添加了部分內容,我可以使用它來訪問'H [i] [j]'中的某個列值嗎?那麼,在我的例子中,如果我只需要'H [0] [1]''11''? – layces

0

這是很難明白你正在嘗試做的。

據我所知好像你到H試圖循環,然後認爲組成它的陣列。

要做到這一點,你可以這樣做

for array in H: 
    for sub_array in array: 
     # do stuff 

否則,如果你想H [1]來訪問信息的[1]和H [3]訪問B [1中的信息]你可以扁平化列表。有兩種方法可以做到這

flat_list = sum(H, []) 

import itertools 
for sub_array in itertools.chain(H): 
    # do stuff