Wydrukuj listę bez nawiasów w jednym wierszu


162

Mam listę w Pythonie np

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

Chcę wydrukować tablicę w jednym wierszu bez normalnego „[]

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

Daje wynik jako;

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

Nie jest to format, którego chcę, zamiast tego chcę, żeby był taki;

Sam, Peter, James, Julian, Ann

Uwaga: musi znajdować się w jednym rzędzie.

Odpowiedzi:


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

To, jak się wydaje, po prostu bierze wszystkie elementy listy i łączy je z ', '.


9
Jeśli niektóre elementy w namesnie są ciągami, użyj print(', '.join(map(str,name)))zamiast tego.
Anonimowy

78

Oto prosty.

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

gwiazda rozpakowuje listę i zwraca każdy element z listy.


8
W python 2.7.6, to jest SyntaxError: invalid syntax.
Fredrick Gauss

1
@FredrickGauss, jeśli dodasz from __future__ import print_function, zadziała również w Pythonie 2.
Anthony Sottile

1
To jest poprawna odpowiedź, ponieważ działa również w przypadku elementów niebędących łańcuchami.
otocan

41

Rozwiązanie ogólne, działa na tablicach niebędących łańcuchami:

>>> print str(names)[1:-1]
'Sam', 'Peter', 'James', 'Julian', 'Ann'

9
To nie spełnia podanego wymagania. Zwróć uwagę na przykład OP pokazujący wynikowe nazwy bez cudzysłowów.
John Y

1
@SteveBennett, czy możesz wyjaśnić fragmentację [1: -1] w Twojej odpowiedzi. Właśnie zacząłem uczyć się Pythona. Dziękuję Ci.
Charan

3
str(names)generuje ciąg podobny do ['Sam', 'Peter'...'Ann']. Nie chcemy nawiasów kwadratowych, stąd odcinek od drugiego znaku do przedostatniego znaku.
Steve Bennett

22

Jeśli tablica wejściowa jest typu Integer , musisz najpierw przekonwertować tablicę na tablicę typu string, a następnie użyć joinmetody do łączenia z ,lub spacji, cokolwiek chcesz. na przykład:

>>> 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
>>>

Bezpośrednie użycie złączenia, które połączy liczbę całkowitą i łańcuch, spowoduje błąd, jak pokazano powyżej.


18

Istnieją dwie odpowiedzi. Pierwsza to ustawienie „sep”

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

Drugi jest poniżej

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


7

','.join(list)zadziała tylko wtedy, gdy wszystkie elementy na liście są ciągami. Jeśli chcesz przekonwertować listę liczb na ciąg oddzielony przecinkami. takie jak a = [1, 2, 3, 4]na '1,2,3,4'wtedy można albo

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

lub

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

chociaż nie spowoduje to usunięcia żadnej zagnieżdżonej listy.

Aby przekonwertować go z powrotem na listę

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

4

Musisz przejrzeć listę i użyć, end=" "aby utrzymać ją w jednym wierszu

names = ["Sam", "Peter", "James", "Julian", "Ann"]
    index=0
    for name in names:
        print(names[index], end=", ")
        index += 1

OP mówi, że musi być w jednym rzędzie.
Ali

2

print (* nazwy)

to zadziała w Pythonie 3, jeśli chcesz, aby były drukowane jako oddzielone spacjami. Jeśli potrzebujesz przecinka lub czegokolwiek innego pomiędzy, skorzystaj z rozwiązania .join ()


1

Nie wiem, czy to jest wydajne jak inne, ale prosta logika zawsze działa:

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(", ")

Wynik:

Sam, Peter, James, Julian, Ann


0

Następująca funkcja pobierze listę i zwróci ciąg znaków elementów list. Można to następnie wykorzystać do celów logowania lub drukowania.

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

0

W przypadku tablicy typu integer musimy najpierw zmienić ją na typ łańcuchowy, a następnie użyć funkcji join, aby uzyskać czysty wynik bez nawiasów.

    arr = [1, 2, 3, 4, 5]    
    print(', '.join(map(str, arr)))

WYJŚCIE - 1, 2, 3, 4, 5

W przypadku tablic typu łańcuchowego musimy bezpośrednio użyć funkcji join, aby uzyskać czysty wynik bez nawiasów.

    arr = ["Ram", "Mohan", "Shyam", "Dilip", "Sohan"]
    print(', '.join(arr)

WYDAJNOŚĆ - Ram, Mohan, Shyam, Dilip, Sohan

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.