常见的 lisp 格式指令来打印列表

common lisp like format directive to print lists

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

第一个在谷歌上搜索如何使用 python 中的 format 打印列表的是 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))

不太精致。

我认为基本答案是 "No",但您可以稍微改进您的示例:

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

没有换行符。如果我想在每个列表后换行,我会做

for lst in (lsta,lstb,lstc):
    print( ' '.join(  '{}'.format(k) for k in lst  ) )