在数组数组中访问数组的行?

时间:2016-03-16 17:19:47

标签: python arrays python-2.7 multidimensional-array

说我有:

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 = ...

我想访问H [0]的第1行,但后来访问H [1]中的行,依此类推。

我的问题:

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列值。所以,我需要来自11的{​​{1}}。我该怎么做?

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分: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

答案 2 :(得分: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