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.

Antworten:


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

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


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.


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'

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.


18

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

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

Der andere ist unten

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


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]

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

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


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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.