2016-04-19 13 views
4

Haftungsausschluss: Die Frage, wie eine Liste in Python drucken bereits mehrfach abgedeckt ist, damit diese Frage nicht, wie eine Liste drucken, sondern darum, ob eine bestimmte Art und Weise eine Liste zu drucken existiert (unter Verwendung der format Direktive).Common Lisp wie Formatierungsanweisung drucken Listen

Der erste Treffer einer wird googeln, wie eine Liste ist here mit format in Python drucken und es sieht so aus:

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

ist der Weg zu gehen. Aber ich frage mich, ob es eine lisp-ähnliche format-Anweisung gibt, um dies ohne die ausführliche Join-Operation zu tun. Z.B. in common lisp würde man einfach schreiben:

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

~{...~} bedeutet im Grunde iterieren Liste

~a im Grunde bedeutet, ein Argument zu nehmen und drucken seine (oder Standard) Drucke mit/zu-String-Richtlinie

~% newline

Gibt es eine solche Format-Anweisung in Python?

Als ein gründlicheres Beispiel, warum ich solche Direktive verwenden möchte: Gegeben, Sie haben 3 Listen, die Sie unter einander drucken möchten. Die Lisp FORMAT erlauben würde:

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

nicht ganz so raffiniert:

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

während die Python-Lösung aussehen würde.

+0

Ein einfaches 'print (lst)' eine Liste drucken, und 'print (lsta, LSTB, LSTC)' wird 3 Listen drucken, eine pro Zeile . Ich nehme an, das ist das, was Ihrem Lisp-Code am nächsten kommt, aber ich kenne Lisp nicht. Es ist nicht klar, wie die Ausgabe aussehen soll, da Ihre beiden Python-Snippets ziemlich unterschiedliche Ergebnisse liefern. –

+0

Es handelt sich nicht um eine bestimmte Ausgabe, sondern um den allgemeinen Begriff der Verwendung einer Drucklistenanweisung in einer Formatzeichenfolge, um anstelle von mehreren Verknüpfungen eine kurze Anweisung zu verwenden. Grundsätzlich möchte ich in der Lage sein, eine Liste in einem beliebigen Kontext zu formatieren. – Sim

+0

Sie können die Liste als eine einzelne Entität drucken, in diesem Fall erhalten Sie ihre String-Darstellung, komplett mit Klammern und Kommas zwischen den "Rep" jedes Listenelements. Wenn das nicht ausreichend ist, müssen Sie eine Art Looping machen. Beachten Sie, dass Sie einer Liste (oder einem anderen Container) von Zeichenfolgen mit 'sep.join (str_lst)' beitreten können, wobei 'str_lst' die Liste der Zeichenfolgen und' sep' die Zeichenfolge zum Trennen der Zeichenfolgenelemente in 'str_lst' ist . –

Antwort

2

ich glaube, die grundlegende Antwort ist „Nein“, aber Sie können Ihr Beispiel ein wenig verfeinern:

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

Keine Zeilenumbrüche. Wenn ich eine neue Zeile nach jeder Liste wollte würde ich tun

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