在二维python lis上迭代

2024-04-24 11:29:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个二维数组,如:

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

打印此列表将提供输出:

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

其中每个列表项都是“row,column”格式的字符串

现在给出这个列表,我想按以下顺序遍历它:

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

即遍历第一列,然后遍历第二列,依此类推。我怎么做循环?

这个问题属于纯python列表,而被标记为相同的问题属于numpy数组。它们明显不同


Tags: columns字符串in标记列表for顺序格式
3条回答

这是正确的方法。

>>> x = [ ['0,0', '0,1'], ['1,0', '1,1'], ['2,0', '2,1'] ]
>>> for i in range(len(x)):
        for j in range(len(x[i])):
                print(x[i][j])


0,0
0,1
1,0
1,1
2,0
2,1
>>> 

使用zipitertools.chain。类似于:

>>> 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']

与填写的方式相同,但请反转索引:

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

相关问题 更多 >