Python - 将数组的数组打印为 table
Python - Print array of array as table
给定数组 A 的数组定义为
A = [[1, 2, 3, 4], [10, 20, 30, 40], [100, 200, 300, 400]],
如果调用打印函数
for i in range(0,3):
print A[i]
下面是输出
[1, 2, 3, 4]
[10, 20, 30, 40]
[100, 200, 300, 400].
如何获得这样的 "prettier" 输出:
[ 1, 2, 3, 4]
[ 10, 20, 30, 40]
[100, 200, 300, 400]
???
谢谢
您只需要知道可能存在的最大位数。如果如您的示例所示位数为三,请执行以下操作:
for i in A:
print(", ".join([str(l).rjust(3) for l in i]))
使用 str(i).rjust(3)
将 i
右对齐到宽度为 3 的字段中,其中额外的字符是空格。您可以使用 str(i).zfill(3)
将它们设为零,或者您可以使用 str(i).rjust(3, "&")
将它们设为任何您想要的值。
输出:
1, 2, 3, 4
10, 20, 30, 40
100, 200, 300, 400
当然,为了使其适用于更多情况,您可以使用 len(str(max(map(max, A))))
而不是硬编码 3.
为什么不为此使用 numpy 数组?
import numpy as np
print np.array(A)
[[ 1 2 3 4]
[ 10 20 30 40]
[100 200 300 400]]
这段代码会更加动态。这将通过 max_len.
找到最大数字的长度和 rjust
A = [[1, 2, 3, 4], [10, 20, 30, 40], [11100, 20033, 300, 400]]
max_len = len(str(max( max(i) for i in A)))
for i in A:
print(", ".join([str(l).rjust(max_len) for l in i]))
如果记录是整数,则不能在其中包含这些空格,但这段代码似乎很好地拆分了数组。
A = [1999999, 2, 3, 47678], [10, 20, 30, 40], [100, 200, 300, 400]
MaxLength=0
for i in range(0,3):
for x in A[i]:
MaxLength =len(str(x)) if MaxLength<len(str(x)) else MaxLength
for i in range(0,3):
for x in range(0,len(A[i])):
Length=MaxLength-len(str(A[i][x]))
print((" "*Length)+str(A[i][x]),end="|")
print()
如果您确实需要,可以在定义中调用它,只需这样做:
def TableFormat(A):
MaxLength=0
for i in range(0,3):
for x in A[i]:
MaxLength =len(str(x)) if MaxLength<len(str(x)) else MaxLength
for i in range(0,3):
for x in range(0,len(A[i])):
Length=MaxLength-len(str(A[i][x]))
print((" "*Length)+str(A[i][x]),end="|")
print()
然后你可以用 A 作为数组做 TableFormat(A)
来整齐地打印 table。 end="|"
可以换成任何你想用
划分记录的东西
最简单的方法是使用两个 for 循环
for list in A:
for element in list:
print element, '\t',
print '\n'
试试这个。
给定数组 A 的数组定义为
A = [[1, 2, 3, 4], [10, 20, 30, 40], [100, 200, 300, 400]],
如果调用打印函数
for i in range(0,3):
print A[i]
下面是输出
[1, 2, 3, 4]
[10, 20, 30, 40]
[100, 200, 300, 400].
如何获得这样的 "prettier" 输出:
[ 1, 2, 3, 4]
[ 10, 20, 30, 40]
[100, 200, 300, 400]
??? 谢谢
您只需要知道可能存在的最大位数。如果如您的示例所示位数为三,请执行以下操作:
for i in A:
print(", ".join([str(l).rjust(3) for l in i]))
使用 str(i).rjust(3)
将 i
右对齐到宽度为 3 的字段中,其中额外的字符是空格。您可以使用 str(i).zfill(3)
将它们设为零,或者您可以使用 str(i).rjust(3, "&")
将它们设为任何您想要的值。
输出:
1, 2, 3, 4
10, 20, 30, 40
100, 200, 300, 400
当然,为了使其适用于更多情况,您可以使用 len(str(max(map(max, A))))
而不是硬编码 3.
为什么不为此使用 numpy 数组?
import numpy as np
print np.array(A)
[[ 1 2 3 4]
[ 10 20 30 40]
[100 200 300 400]]
这段代码会更加动态。这将通过 max_len.
找到最大数字的长度和 rjustA = [[1, 2, 3, 4], [10, 20, 30, 40], [11100, 20033, 300, 400]]
max_len = len(str(max( max(i) for i in A)))
for i in A:
print(", ".join([str(l).rjust(max_len) for l in i]))
如果记录是整数,则不能在其中包含这些空格,但这段代码似乎很好地拆分了数组。
A = [1999999, 2, 3, 47678], [10, 20, 30, 40], [100, 200, 300, 400]
MaxLength=0
for i in range(0,3):
for x in A[i]:
MaxLength =len(str(x)) if MaxLength<len(str(x)) else MaxLength
for i in range(0,3):
for x in range(0,len(A[i])):
Length=MaxLength-len(str(A[i][x]))
print((" "*Length)+str(A[i][x]),end="|")
print()
如果您确实需要,可以在定义中调用它,只需这样做:
def TableFormat(A):
MaxLength=0
for i in range(0,3):
for x in A[i]:
MaxLength =len(str(x)) if MaxLength<len(str(x)) else MaxLength
for i in range(0,3):
for x in range(0,len(A[i])):
Length=MaxLength-len(str(A[i][x]))
print((" "*Length)+str(A[i][x]),end="|")
print()
然后你可以用 A 作为数组做 TableFormat(A)
来整齐地打印 table。 end="|"
可以换成任何你想用
最简单的方法是使用两个 for 循环
for list in A:
for element in list:
print element, '\t',
print '\n'
试试这个。