2012-06-24 132 views
65

Tengo una lista en Python p.Imprimir lista sin corchetes en una sola fila

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

Quiero imprimir la matriz en una sola línea sin la normal "[]

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

dará a la salida como;

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

Ese no es el formato que quiero en su lugar, quiero que sea así:

Sam, Peter, James, Julian, Ann 

Nota: debe estar en una sola fila.

Respuesta

107
print ', '.join(names) 

Esto, como suena, sólo se necesita todos los elementos de la lista y se une a ellas con ', '.

+1

>>> nombres = [ "Sam", "Peter", "James" , "Julian", "Ann"] >>> print ','.join (names) SyntaxError: sintaxis no válida no funciona "FatalError" – Isuru

+10

@IsuruMalakaSamarasinha Si esto es python 3, entonces naturalmente tendrá que llamar a la función print * (es una palabra clave en Python 2), es decir, ' print (',' .join (nombres)) '. – FatalError

+0

cómo hacer esto con el diccionario? –

8

Esto es lo que necesita

", ".join(names) 
+0

Envuelve el resultado entre comillas. –

24

solución general, funciona en las matrices de los no-strings:

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

Aparentemente, hay más de una forma de hacerlo. – Max

+8

Esto no cumple con el requisito establecido. Tenga en cuenta el ejemplo de OP que muestra los nombres resultantes sin comillas. –

+0

Buen punto. (...) –

3

Es necesario para recorrer la lista y utiliza end=" " para mantenerlo en una línea

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

OP dice que debe estar en una sola fila. – Ali

23

Aquí hay uno simple.

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

la estrella desempaqueta la lista y devuelve cada elemento de la lista.

+5

En 'python 2.7.6', esto es un' SyntaxError: sintaxis inválida'. –

+1

Esto no pone la coma entre los elementos. –

+4

Solo agregue el parámetro adicional sep: print (* names, sep = ',') –

0

No sé si esto es eficiente como los demás, sino simple lógica siempre funciona:

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

Salida:

Sam, Peter, James, Julian, Ann

10

Si la matriz de entrada es tipo Integer entonces necesita primero convierta matriz en cadena tipo matriz y luego utilice el método join para unir con , o espacio lo que quieras. por ejemplo:

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

directa usando de unirse a la que se unirá a la cadena entera y tirará de error como se muestra arriba.

+0

cómo realizar esto con el diccionario –

6

Hay dos respuestas, primero es el uso 'SEP establecer

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

El otro es a continuación

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

Esta es la solución más madura. –

Cuestiones relacionadas