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.

Respuestas:


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

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


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.


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'

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.


18

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

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

El otro esta abajo

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


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]

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

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


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


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.