Python-用函数替换打印

时间:2018-08-28 21:00:17

标签: python string python-3.x numpy

我所拥有的:

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'

我想上面的代码是不言自明的。我想以函数的形式重写上面的输出,该函数将输出匹配上面打印的字符串。

2 个答案:

答案 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)