常见的lisp like format指令来打印列表

时间:2016-04-19 09:43:00

标签: python formatting common-lisp

免责声明 如何在python中打印列表的问题已经多次覆盖,因此,这个问题不会问如何打印列表但是是否存在打印列表的特定方式(使用格式指令)。

第一个匹配的人在谷歌搜索如何使用format在python here中打印列表,它看起来像:

print('\n'.join('{}'.format(k) for k in lst))

是要走的路。但我一直想知道是否有一个类似于lisp的格式指令来执行此操作而不需要详细的连接操作。例如。在common lisp中,可以简单地写一下:

(FORMAT T "~%~{~a~%~}" list-i-want-printed)

~{...~}基本上意味着迭代列表

~a基本上意味着接受一个参数并使用其(或默认的)print / to-string指令打印它

~%换行

python中是否存在这样的格式指令?

作为一个更彻底的例子,我想使用这样的指令: 鉴于您有3个列表,您想要在彼此下面打印。 lisp FORMAT允许:

(FORMAT T "~{~a~}~%~{~a~}~%~{~a~}~%" list-1 list-2 list-3)

而python解决方案看起来像:

print(''.join('{}'.format(k) for k in lsta) + '\n' + ''.join('{}'.format(k) for k in lstb) + '\n' + ''.join('{}'.format(k) for k in lstc))

不太精致。

1 个答案:

答案 0 :(得分:2)

我认为基本答案是“不”,但你可以稍微改进一下你的例子:

   Error in axis(side = 1, at = 1:24, labels = c("V4", "G8"), xaxt = "n",     : 
  'at' and 'labels' lengths differ, 24 != 2
  In addition: Warning message:
  In bxp(list(stats = c(-1.20186549488911, -0.970033304559564,   -0.465271399251147,  :
  some notches went outside hinges ('box'): maybe set notch=FALSE

没有换行。如果我想在每个列表之后使用换行符

print( ' '.join(  '{}'.format(k) for k in lsta+lstb+lstc  ) )