用于打印列表的通用 lisp 格式指令

Sim*_*Sim 5 python formatting common-lisp

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

第一个点击谷歌搜索如何format在 python中使用打印列表在这里,它看起来像:

print('\n'.join('{}'.format(k) for k in lst))
Run Code Online (Sandbox Code Playgroud)

是要走的路。但是我一直想知道是否有类似 lisp 的格式指令可以在没有详细连接操作的情况下执行此操作。例如,在普通的 lisp 中,一个简单的写法是:

(FORMAT T "~%~{~a~%~}" list-i-want-printed)
Run Code Online (Sandbox Code Playgroud)

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

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

~% 新队

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

作为一个更详细的例子,为什么我想使用这样的指令:假设你有 3 个列表,你想在彼此下面打印。lispFORMAT将允许:

(FORMAT T "~{~a~}~%~{~a~}~%~{~a~}~%" list-1 list-2 list-3)
Run Code Online (Sandbox Code Playgroud)

而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))
Run Code Online (Sandbox Code Playgroud)

没有那么精致。

nig*_*222 2

我认为基本答案是“否”,但您可以稍微改进一下您的示例:

print( ' '.join(  '{}'.format(k) for k in lsta+lstb+lstc  ) )
Run Code Online (Sandbox Code Playgroud)

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

for lst in (lsta,lstb,lstc):
    print( ' '.join(  '{}'.format(k) for k in lst  ) )
Run Code Online (Sandbox Code Playgroud)