Imprimir lista sin corchetes en una sola fila

162

Tengo una lista en Python, por ejemplo

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á la salida como;

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

Ese no es el formato que quiero, sino que quiero que sea así;

Sam, Peter, James, Julian, Ann

Nota: debe estar en una sola fila.

Isuru
fuente

Respuestas:

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

Esto, como parece, solo toma todos los elementos de la lista y los une ', '.

Error fatal
fuente
9
Si algunos elementos en namesno son cadenas, use print(', '.join(map(str,name)))en su lugar.
Anónimo el
78

Aquí hay uno simple.

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

la estrella desempaqueta la lista y devuelve todos los elementos de la lista.

Jianru Shi
fuente
8
En python 2.7.6, Este es un SyntaxError: invalid syntax.
Fredrick Gauss
1
@FredrickGauss si agrega, from __future__ import print_functiontambién funcionará en Python 2.
Anthony Sottile el
1
Esta es la respuesta correcta, ya que también funciona con no cadenas.
otocan
41

Solución general, funciona en matrices de no cadenas:

>>> print str(names)[1:-1]
'Sam', 'Peter', 'James', 'Julian', 'Ann'
Steve Bennett
fuente
9
Esto no cumple con el requisito establecido. Tenga en cuenta el ejemplo del OP que muestra los nombres resultantes sin comillas.
John Y
1
@SteveBennett, ¿puede explicar el corte [1: -1] en su respuesta? Acabo de empezar a aprender Python. Gracias.
Charan
3
str(names)genera una cadena como ['Sam', 'Peter'...'Ann']. No queremos los corchetes, por lo tanto, corte del segundo carácter al segundo último carácter.
Steve Bennett
22

Si la matriz de entrada es de tipo Entero, primero debe convertir la matriz en una matriz de tipo de cadena y luego usar el joinmétodo para unir ,o espaciar lo que desee. p.ej:

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

El uso directo de join que unirá el entero y la cadena arrojará un error como se muestra arriba.

Krishna Prasad
fuente
18

Hay dos respuestas, la primera es usar la configuración 'sep'

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

El otro esta abajo

>>> print(', '.join(names))
lyerox
fuente
10

Esto es lo que necesitas

", ".join(names)
usuario278064
fuente
1
Envuelve el resultado entre comillas.
Fredrick Gauss
7

','.join(list)solo funcionará si todos los elementos de la lista son cadenas. Si está buscando convertir una lista de números en una cadena separada por comas. como a = [1, 2, 3, 4]en '1,2,3,4'entonces puedes

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

o

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

aunque esto no eliminará ninguna lista anidada.

Para volver a convertirlo en una lista

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

Debe recorrer la lista y usarla end=" "para mantenerla en una línea

names = ["Sam", "Peter", "James", "Julian", "Ann"]
    index=0
    for name in names:
        print(names[index], end=", ")
        index += 1
Guerrero Tofu
fuente
OP dice que debe estar en una sola fila.
Ali
2

imprimir (* nombres)

esto funcionará en python 3 si desea que se impriman como espacios separados. Si necesita una coma o cualquier otra cosa intermedia, continúe con la solución .join ()

ppmakeitcount
fuente
1

No sé si esto es eficiente como otros, pero la lógica simple 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

Fredrick Gauss
fuente
0

La siguiente función tomará una lista y devolverá una cadena de elementos de las listas. Esto se puede utilizar para fines de registro o impresión.

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
fuente