首页 > 解决方案 > 如何以不同的方式打印二维数组

问题描述

我有一个像这样的数组a = [[1, 2, 3, 4],[5, 6, 7, 8]]。我希望能够将其拆分,以便它像一行列表中的第一个项目一样打印出来,然后在下一行的两个列表中打印第二个项目。1 5(换行) 2 6(换行) 3 7(换行) 4 8

标签: python

解决方案


使用zip()函数和*(解包运算符)

a = [[1, 2, 3, 4],[5, 6, 7, 8], [9, 10, 11, 12]]

for item in zip(*a):
    print (*item)

或列表理解:

[print(*item) for item in zip(*a)]

输出:

1 5 9
2 6 10
3 7 11
4 8 12

如果您的子列表长度不同,您可以将其用于 Python 3itertools.zip_longest()itertools.izip_longest(Python 2.6+):

itertools.zip_longest()

创建一个迭代器,聚合来自每个可迭代对象的元素。如果可迭代的长度不均匀,则用 fillvalue 填充缺失值。迭代一直持续到最长的可迭代对象用完为止。

句法:

itertools.zip_longest(*iterables, fillvalue=None)

例子:

import itertools
a = [[1, 2, 3],[5, 6, 7, 8, 9], [10, 11, 12, 13]]

for item in itertools.zip_longest(*a):
    print (*item)

输出:

1 5 10
2 6 11
3 7 12
None 8 13
None 9 None

推荐阅读