2012-06-24 18 views
65

Mam listę w języku Python np.Lista drukowania bez nawiasów w jednym wierszu

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

chcę wydrukować tablicy w jednej linii bez normalny "[]

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

da wyjście jak:

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

to nie jest format chcę zamiast tego chcę, żeby tak było:

Sam, Peter, James, Julian, Ann 

Uwaga: musi znajdować się w jednym wierszu.

Odpowiedz

107
print ', '.join(names) 

to, jak się wydaje, po prostu ma wszystkie elementy na liście i łączy je z ', '.

+1

>>> Nazwy = [ "Sam", "Piotr", "James" , "Julian", "Ann"] >>> drukuj ",".join (names) SyntaxError: nieprawidłowa składnia nie działa "FatalError" – Isuru

+10

@IsuruMalakaSamarasinha Jeśli jest to python 3, to oczywiście musisz wywołać funkcję print * (jest to słowo kluczowe w Pythonie 2), tzn. ' print (',' .join (names)) '. – FatalError

+0

jak to zrobić ze słownikiem? –

8

To jest to, czego potrzebujesz

", ".join(names) 
+0

Zawija wynik w cudzysłów. –

24

rozwiązanie ogólne prace nad tablicami niebędących strun:

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

Widocznie jest na to więcej niż jeden sposób. – Max

+8

To nie spełnia określonego wymagania. Zwróć uwagę na przykład OP pokazujący otrzymane nazwy bez cudzysłowów. –

+0

Dobra uwaga. (...) –

3

Trzeba pętli listy i użyć end=" " aby utrzymać go w jednej linii

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

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

23

Oto prosty.

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

gwiazda rozpakowuje listę i zwraca każdy element na liście.

+5

W 'python 2.7.6', jest to' SyntaxError: invalid syntax'. –

+1

Nie umieszcza przecinka między elementami. –

+4

Po prostu dodaj dodatkowy parametr sep: print (* names, sep = ',') –

0

Nie wiem, czy to jest skuteczne, jak inni, 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(", ") 

wyjściowa:

Sam, Peter, James, Julian, Ann

10

Jeśli tablica wejściowa jest Integer typ to trzeba najpierw przekonwertuj tablicę na ciąg znaków typu, a następnie użyj metody join do łączenia z , lub space cokolwiek chcesz. np.

>>> 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 sprzężenia, które będzie dołączać liczbę całkowitą i ciąg, spowoduje błąd, jak pokazano powyżej.

+0

jak to zrobić ze słownikiem –

6

Istnieją dwie odpowiedzi, Pierwszy to użycie 'wrzesień' ustawienie

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

Drugi jest poniżej

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

To jest najbardziej dojrzałe rozwiązanie. –

Powiązane problemy