Verketten oder drucken Sie Listenelemente mit einem abschließenden Komma in Python

9

Ich habe eine Liste als:

%Vor%

wenn ich die join-Anweisung verwende,

%Vor%

gibt mir die Ausgabe als:

%Vor%

Aber was muss ich tun, wenn ich ausgeben möchte als:

%Vor%

(Ich weiß, dass ich string concat verwenden kann, aber ich möchte etwas besseres wissen)

.

    
sam 25.04.2012, 07:37
quelle

8 Antworten

12

String Verkettung ist der beste Weg:

%Vor%

Aber Sie haben auch andere Optionen:

  1. Mapping zu Komma-enden Zeichenketten, dann verbinden:

    %Vor%
  2. Anhängen einer leeren Zeichenfolge an die verknüpfte Liste (nicht die ursprüngliche l -Liste ändern!):

    %Vor%
  3. Verwenden der Zeichenfolgenformatierung anstelle der Verkettung:

    %Vor%
Tadeck 25.04.2012, 07:41
quelle
6

Wenn Sie in Python 3 sind, könnten Sie die integrierte Druckfunktion nutzen:

%Vor%
  • *l entpackt die Liste der Elemente, die als einzelne Argumente an
  • übergeben werden sollen
  • sep ist ein optionales Argument, das zwischen Elementen steht, die aus den Elementen gedruckt werden, hier setze ich es auf ', ' mit einem Leerzeichen, wie du
  • benötigst
  • end ist ein optionales Argument, das an der und der resultierenden gedruckten Zeichenfolge ausgegeben wird. Ich habe es auf ',' ohne Leerzeichen gesetzt, um Ihrem Bedarf zu entsprechen

Sie können Python 2.6 verwenden, indem Sie die Druckfunktion

importieren %Vor%

Allerdings hat dieser Weg mehrere Vorbehalte:

  • Dies setzt voraus, dass Sie die resultierende Zeichenfolge in stdout ausgeben möchten; oder Sie können die Ausgabe in einer Datei mit dem optionalen Argument file in eine Datei
  • umleiten
  • Wenn Sie in Python 2 sind, kann der __future__ Import die Code-Kompatibilität unterbrechen, so dass Sie Ihren Code in einem separaten Modul isolieren müssen, wenn der Rest Ihres Codes nicht kompatibel ist.

Kurz gesagt, entweder diese Methode oder die anderen vorgeschlagenen Antworten sind sehr bemüht, zu vermeiden, dass nur ein +',' am Ende der join resultierenden Zeichenfolge

hinzugefügt wird     
Boud 25.04.2012 09:14
quelle
4

Damit str.join() funktioniert, müssen die Elemente, die in der Iterablen enthalten sind (d. h. eine Liste hier), selbst Zeichenfolgen sein. Wenn Sie ein abschließendes Komma benötigen, fügen Sie einfach eine leere Zeichenfolge am Ende Ihrer Liste hinzu.

Bearbeiten : Um es ein wenig auszudrücken:

%Vor%     
Michael Wild 25.04.2012 07:40
quelle
1

Um die angezeigten Leerzeichen einzuschließen, müssen Sie in der Trennzeichenfolge ein Leerzeichen einfügen:

%Vor%

Oder machen Sie DRYer :

%Vor%

Im letzteren Fall wird rstrip() nur verwendet, um den abschließenden Leerzeichen (Teil von sep ) zu entfernen, da dies nicht in der gewünschten Ausgabe ist. Es ist nicht die billigste Art, dies zu tun, aber es ist ziemlich klar.

    
unwind 25.04.2012 07:39
quelle
1

Erstens wird ','.join(l) überhaupt nicht funktionieren, da die Elemente Zeichenfolgen sein müssen, was sie nicht sind.

Sie können das beheben und das nachgestellte Komma wie folgt hinzufügen:

%Vor%

Ich denke, das ist bei weitem der sauberste Weg, es zu tun.

    
NPE 25.04.2012 07:41
quelle
1

Wenn Sie keine Verkettung wünschen, könnten die Dinge hacky sein ...

%Vor%     
okm 25.04.2012 08:46
quelle
0

Diese IDLE-Sitzung ist ein gutes Beispiel dafür, wie die Listenelemente in einen String mit einem abschließenden Komma gezogen werden:

%Vor%     
jamylak 25.04.2012 13:18
quelle
0

Ich weiß nicht, ob Sie das suchen? Es funktioniert aber.

l = [1,2,3,4]

für num in l:   Drucken (str (num), Ende=",")

    
Christopher Stigson 31.12.2017 16:09
quelle

Tags und Links