用python将列表打印到表上

用python将列表打印到表上,python,list,Python,List,如果我有三个列表,比如 a = [1, 2, 3] b = [4, 5, 6] c = [7, 8, 9] 想把它印成这样 1 4 7 2 5 8 3 6 9 我该怎么做呢?这应该可以做到: '\n'.join(' '.join(map(str,tup)) for tup in zip(a,b,c)) 这其中最困难的部分是变换数组。但这很容易,因为: 现在您只需将其打印出来: print('\n'.join(' '.join(map(str, row)) for row in

如果我有三个列表,比如

a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9]
想把它印成这样

1  4  7
2  5  8
3  6  9
我该怎么做呢?

这应该可以做到:

'\n'.join(' '.join(map(str,tup)) for tup in zip(a,b,c))

这其中最困难的部分是变换数组。但这很容易,因为:

现在您只需将其打印出来:

print('\n'.join('  '.join(map(str, row)) for row in t))
使用列表理解生成器表达式,不使用映射函数:

'\n'.join(' '.join(str(y) for y in x) for x in zip(a,b,c))

+1,如果不是因为其他原因,而是因为你在36秒内回答了这个问题。我想你需要
'
,因为OP在列之间有两个空格。或者将其保留为
'
,并执行
str(x).ljust(2)
而不是
str
。请稍候,这是错误的…OP正在尝试打印转换后的列表。这不会给出OP要求的输出。@abarnert--谢谢。我没有注意到,直到你提到它。米比复制,IMHO,一个非常可读的解决方案。我喜欢将zip分开(与其他答案不同),因为转置和显示是根本不同的事情。首先,如果您所做的只是映射一个已经存在的命名良好的函数,为什么不使用
map
?是的,当您必须构建
lambda
部分
时,它的可读性较差,但在这种情况下,我认为它更具可读性。(另外,您在这里没有列表理解,您有一个生成器表达式。)@abarnert:您自己刚刚回答了问题:map不必要地创建了一个列表,而该列表不是创建的,因为我使用了生成器表达式(很抱歉命名错误,编辑了它)。生成器比列表更干净。我还应该使用zip的功能等价物,因此在脚本顶部添加
from itertools import izip as zip
。@pvoosten:实际上,
join
在您给它一个迭代器时会创建一个列表(至少使用CPython和pypypy,可能使用所有实现)。另外,
map
不会在3.x中创建列表。最重要的是,创建一个包含3个元素的列表对性能的影响是如此的微不足道,以至于进行这种讨论都是愚蠢的。使用可读性更强的选项。
'\n'.join(' '.join(str(y) for y in x) for x in zip(a,b,c))