我所拥有的:
import numpy as np
l = np.array([['a11','a12'],['a21','a22']])
layout = '{!s:6}'*2
for i in range(np.shape(l)[1]):
print(layout.format(*l[i]))
输出:
a11 a12
a21 a22
我想要什么:
def table (two_dim_array):
(i,j) = np.shape (two_dim_array)
layout = '{!s:6}'*j
#for k in range (i):
#return layout.format(*two_dim_array[k])
return 'a string that matches the table printed above'
我想上面的代码是不言自明的。我想以函数的形式重写上面的输出,该函数将输出匹配上面打印的字符串。
答案 0 :(得分:1)
print(x)
将x
和\n
写入标准输出。因此,您基本上希望将每个print(x)
替换为return_value += x + '\n'
。
因此:
return_value = ''
for i in range(np.shape(l)[1]):
return_value += layout.format(*l[i]) + '\n'
return return_value
另一种方法是使用str.join
和一个生成器表达式:
return '\n'.join(layout.format(*l[i]) for i in range(np.shape(l)[1]))
但是再说一次,您也不需要layout = '{!s:6}'*j
部分:
return '\n'.join(''.join('{!s:6}'.format(cell) for cell in row)
for row in two_dim_array)
答案 1 :(得分:1)
或多或少用print
替换return
:
def table (two_dim_array):
layout = '{!s:6}' * two_dim_array.shape[1]
return '\n'.join(layout.format(*row) for row in two_dim_array)