我正在开发一个命令行解释器,并且我有一个函数可以以易于阅读的方式打印出一长串字符串。
功能是:
def pretty_print(CL_output):
if len(CL_output)%2 == 0:
#even
print "\n".join("%-20s %s"%(CL_output[i],CL_output[i+len(CL_output)/2]) for i in range(len(CL_output)/2))
else:
#odd
d_odd = CL_output + ['']
print "\n".join("%-20s %s"%(d_odd[i],d_odd[i+len(d_odd)/2]) for i in range(len(d_odd)/2))
因此,对于如下列表:
myList = ['one','potato','two','potato','three','potato','four','potato'...]
函数 pretty_print 返回:
pretty_print(myList)
>>> one three
potato potato
two four
potato potato
然而,对于更大的列表,函数 pretty_print 仍将列表打印成两列。有没有办法修改 pretty_print 以便根据列表的大小打印出 3 或 4 列的列表?所以 len(myList) ~ 100, pretty_print 将在 3 行上打印出来,而对于 len(myList) ~ 300,pretty_print 将在 4 列上打印出来。
所以如果我有:
myList_long = ['one','potato','two','potato','three','potato','four','potato'...
'one hundred`, potato ...... `three hundred`,potato]
所需的输出是:
pretty_print(myList_long)
>>> one three one hundred three hundred
potato potato potato potato
two four ... ...
potato potato ... ....