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.