首页 > 解决方案 > 在 txt 文件中打印二维数组仅保存最后一行 - .join 的使用不正确?

问题描述

我有一个二维数组(yieldpergroup)并尝试使用类似的东西垂直保存每个数组

with open('txt/All_numbers.txt', 'w') as f:
    lines = ['  \t'.join([str(x[i]) for x in yieldpergroup]) for i in range(0,len(max(yieldpergroup)))]

即我的数组是这样的

yieldpergroup([a,b,c,d][1,2,3,4][!,@,#,$])

我想要它的格式

 a 1 !
 b 2 @
 c 3 #
 d 4 $

但是,txt 虽然正确地包含所有列,但是只有最后一个正确显示,所有其他列都用零填充(就像我第一次使用 yieldpergroup = [[0 for i in range(cols)] for j in范围(行)])。使用 join 时我做错了什么?

标签: pythonarrays

解决方案


您可以使用zip转置模式来获得所需的结果。利用:

yieldpergroup = (['A','B','C', 'D'], [1,2,3,4], ['!','@','#','$'])

with open('txt/All_numbers.txt', 'w') as f:
    for t in zip(*yieldpergroup):
        f.write("\t".join(map(str, t)) + "\n")

执行上述代码后,您的.txt文件应如下所示:

A 1 !
B 2 @
C 3 #
D 4 $

推荐阅读