Skip to main content
  1. About
  2. For Teams
Asked
Viewed 25k times
5

Say i have:

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

I want to access row 1 of H[0], but then move onto accessing the rows within H[1] and so on.

My question(s):

1) How do i call on row 1 of H[0]?

2) How do i then, after going through all rows in H[0], make a loop run to H[1]?

I know i need something like

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)

All help is appreciated. Thank you.

Edit: I now know I can access this by H[0][1] but i actually need the 0th column values within each row of the arrays. So, i need 11 from H[0][1]. How do i do this?

2
  • Row 1 of H[0] should simply be H[0][1], no?
    Joachim Isaksson
    –  Joachim Isaksson
    2016-03-16 17:24:13 +00:00
    Commented Mar 16, 2016 at 17:24
  • I definitely didn't realize that..
    layces
    –  layces
    2016-03-16 18:14:02 +00:00
    Commented Mar 16, 2016 at 18:14

3 Answers 3

4
H = [a, b, c]

Right? If so, then answers:

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:

One more example shows iterating through arrays, their's rows and elements:

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))

Output:

array 0
    row 0
    1
    2
    row 1
    3
    4
array 1
    row 0
    5
    6
    row 1
    7
    8
Sign up to request clarification or add additional context in comments.

4 Comments

For that second part, how would i separate my actions/what i'm doing between those two? So if i had H[i][j] and for arr in H: acted on i but for row in arr: acted on j , i'm confused on where exactly i would place my i+=1 or j+=1 @germn
@TC, in most cases you don't need i, j. Python is not C: in python you work with objects in list, not with it's indexes. In case you really need index of element, you can use enumerate(), see: stackoverflow.com/a/522578/1113207
Okay so i had improperly named my own things, so at first i wasn't getting a proper recreation, but now i am! My very last question is still: how do i specifically only call on the very first column values for each row? Ex: 1,3,5,7 in your output example? I do not know what they are /called/, using el, row_i or row, and arr_i or arr ?
I just ended up erasing all the other columns and backing it up into a separate list of lists. Thank you though, this as a whole answered my questions best.
2

What about:

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

This loop automatically moves on to the next array when the current array is finished.

If you need indices for the arrays then something like:

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

5 Comments

Huh, so where would i put my break in this? Would it be at the end of the first for-loop? Or would it be better to put all of this in a while: ?
where do you want to put a break? you didn't mention it in your question.
I need it to stop at the point i labeled stop when (criteria here reached). And thank you so much for your added part to the answer, can i use that to access only a certain column value inside of H[i][j]? So, in my example, if i only needed 11 from H[0][1]?
yeah, sure, if i == 0 and j == 1: # do stuff
Not sure what your break criteria is, but you can put an if...break statement in the inner loop if you're ok with it stoppint in the middle of a row.
0

It is difficult to understand what you are trying to do.

From what I understand though you are trying to loop through H and then thought the arrays that comprise it.

To do that you can do something like

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

Otherwise if you want H[1] to access the information in a[1] and for H[3] to access the information in b[1] you can flatten the list. There are two ways to do this

flat_list = sum(H, [])

or

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

Comments

Your Answer

Post as a guest

Required, but never shown

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.

Morty Proxy This is a proxified and sanitized view of the page, visit original site.