Liste ohne Klammern in einer Zeile drucken

162

Ich habe eine Liste in Python, z

names = ["Sam", "Peter", "James", "Julian", "Ann"]

Ich möchte das Array in einer einzelnen Zeile ohne das normale "[] drucken

names = ["Sam", "Peter", "James", "Julian", "Ann"]
print (names)

Gibt die Ausgabe als;

["Sam", "Peter", "James", "Julian", "Ann"]

Das ist nicht das Format, das ich möchte, sondern ich möchte, dass es so ist.

Sam, Peter, James, Julian, Ann

Hinweis: Es muss sich um eine einzelne Zeile handeln.

Isuru
quelle

Antworten:

240
print(', '.join(names))

Wie es sich anhört, nimmt dies einfach alle Elemente der Liste und verbindet sie mit ', '.

Fataler Fehler
quelle
8
Wenn einige Elemente nameskeine Zeichenfolgen sind, verwenden Sie print(', '.join(map(str,name)))stattdessen.
Anonym
78

Hier ist eine einfache.

names = ["Sam", "Peter", "James", "Julian", "Ann"]
print(*names, sep=", ")

Der Stern entpackt die Liste und gibt jedes Element in der Liste zurück.

Jianru Shi
quelle
8
In python 2.7.6, Dies ist ein SyntaxError: invalid syntax.
Fredrick Gauss
1
@FredrickGauss, wenn Sie es hinzufügen from __future__ import print_function, funktioniert es auch in Python 2.
Anthony Sottile
1
Dies ist die richtige Antwort, da sie auch mit Nicht-Strings funktioniert.
Otocan
41

Allgemeine Lösung, funktioniert auf Arrays von Nicht-Strings:

>>> print str(names)[1:-1]
'Sam', 'Peter', 'James', 'Julian', 'Ann'
Steve Bennett
quelle
9
Dies entspricht nicht der angegebenen Anforderung. Beachten Sie das Beispiel des OP, in dem die resultierenden Namen ohne Anführungszeichen angezeigt werden.
John Y
1
@SteveBennett können Sie bitte das Schneiden [1: -1] in Ihrer Antwort erklären. Ich habe gerade angefangen, Python zu lernen. Danke dir.
Charan
3
str(names)erzeugt einen String wie ['Sam', 'Peter'...'Ann']. Wir wollen keine eckigen Klammern, also schneiden Sie vom 2. zum vorletzten Zeichen.
Steve Bennett
22

Wenn das Eingabearray vom Typ Integer ist, müssen Sie zuerst das Array in ein Array vom Typ String konvertieren und dann die joinMethode zum Verknüpfen mit ,oder Leerzeichen verwenden, was auch immer Sie möchten. z.B:

>>> arr = [1, 2, 4, 3]
>>> print(", " . join(arr))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected string, int found
>>> sarr = [str(a) for a in arr]
>>> print(", " . join(sarr))
1, 2, 4, 3
>>>

Die direkte Verwendung von join, das die Ganzzahl und den String verbindet, löst einen Fehler aus, wie oben gezeigt.

krishna Prasad
quelle
18

Es gibt zwei Antworten: Erstens wird die Einstellung "Sep" verwendet

>>> print(*names, sep = ', ')

Der andere ist unten

>>> print(', '.join(names))
Lyerox
quelle
10

Das brauchen Sie

", ".join(names)
user278064
quelle
1
Das Ergebnis wird in Anführungszeichen gesetzt.
Fredrick Gauss
7

','.join(list)funktioniert nur, wenn alle Elemente in der Liste Zeichenfolgen sind. Wenn Sie eine Liste von Zahlen in eine durch Kommas getrennte Zeichenfolge konvertieren möchten. wie a = [1, 2, 3, 4]in '1,2,3,4'dann kannst du entweder

str(a)[1:-1] # '1, 2, 3, 4'

oder

str(a).lstrip('[').rstrip(']') # '1, 2, 3, 4'

Dies entfernt jedoch keine verschachtelte Liste.

Um es wieder in eine Liste umzuwandeln

a = '1,2,3,4'
import ast
ast.literal_eval('['+a+']')
#[1, 2, 3, 4]
Vineeth Sai
quelle
4

Sie müssen die Liste durchlaufen und verwenden end=" ", um sie in einer Zeile zu halten

names = ["Sam", "Peter", "James", "Julian", "Ann"]
    index=0
    for name in names:
        print(names[index], end=", ")
        index += 1
Tofu-Krieger
quelle
OP sagt, dass es in einer einzelnen Reihe sein muss.
Ali
2

print (* Namen)

Dies funktioniert in Python 3, wenn Sie möchten, dass sie als Leerzeichen getrennt ausgedruckt werden. Wenn Sie ein Komma oder etwas anderes dazwischen benötigen, fahren Sie mit der .join () -Lösung fort

ppmakeitcount
quelle
1

Ich weiß nicht, ob dies so effizient ist wie andere, aber einfache Logik funktioniert immer:

import sys
name = ["Sam", "Peter", "James", "Julian", "Ann"]
for i in range(0, len(names)):
    sys.stdout.write(names[i])
    if i != len(names)-1:
        sys.stdout.write(", ")

Ausgabe:

Sam, Peter, James, Julian, Ann

Fredrick Gauss
quelle
0

Die folgende Funktion nimmt eine Liste auf und gibt eine Zeichenfolge der Listenelemente zurück. Dies kann dann zum Protokollieren oder Drucken verwendet werden.

def listToString(inList):
    outString = ''
    if len(inList)==1:
        outString = outString+str(inList[0])
    if len(inList)>1:
        outString = outString+str(inList[0])
        for items in inList[1:]:
            outString = outString+', '+str(items)
    return outString
Rajesh Thennan
quelle