Iterating over a 2 dimensional python list


Question

I have created a 2 dimension array like:

rows =3
columns= 2
mylist = [[0 for x in range(columns)] for x in range(rows)]
for i in range(rows):
    for j in range(columns):
        mylist[i][j] = '%s,%s'%(i,j)
print mylist

Printing this list gives an output:

[  ['0,0', '0,1'], ['1,0', '1,1'], ['2,0', '2,1']   ]

where each list item is a string of the format 'row,column'

Now given this list, i want to iterate through it in the order:

'0,0'
'1,0'
'2,0'
'0,1'
'1,1'
'2,1'

that is iterate through 1st column then 2nd column and so on. How do i do it with a loop ?

This Question pertains to pure python list while the question which is marked as same pertains to numpy arrays. They are clearly different

1
35
6/18/2017 5:03:53 PM

Accepted Answer

Use zip and itertools.chain. Something like:

>>> from itertools import chain
>>> l = chain.from_iterable(zip(*l))
<itertools.chain object at 0x104612610>
>>> list(l)
['0,0', '1,0', '2,0', '0,1', '1,1', '2,1']
21
5/14/2013 5:02:16 PM

same way you did the fill in, but reverse the indexes:

>>> for j in range(columns):
...     for i in range(rows):
...        print mylist[i][j],
... 
0,0 1,0 2,0 0,1 1,1 2,1
>>> 

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon