así que tengo una lista:¿Cómo imprimir "correctamente" una lista?
['x', 3, 'b']
Y quiero que la salida sea:
[x, 3, b]
¿Cómo se puede hacer esto en Python?
Si hago str(['x', 3, 'b'])
, obtengo una con las comillas, pero no quiero las comillas.
así que tengo una lista:¿Cómo imprimir "correctamente" una lista?
['x', 3, 'b']
Y quiero que la salida sea:
[x, 3, b]
¿Cómo se puede hacer esto en Python?
Si hago str(['x', 3, 'b'])
, obtengo una con las comillas, pero no quiero las comillas.
mylist = ['x', 3, 'b']
print '[%s]' % ', '.join(map(str, mylist))
Aquí hay una sesión interactiva que muestra algunos de los pasos en @ one-liner de TokenMacGuy. Primero usa la función map
para convertir cada elemento de la lista en una cadena (en realidad, está haciendo una nueva lista, sin convertir los elementos en la lista anterior). Luego usa el método de cadena join
para combinar esas cadenas con ', '
entre ellas. El resto es solo el formato de cadenas, lo cual es bastante sencillo. (Editar: esta instancia es sencilla; el formato de cadenas en general puede ser algo complejo.)
Tenga en cuenta que usar join
es una manera simple y eficiente de crear una cadena a partir de varias subcadenas, mucho más eficiente que hacerlo al agregar sucesivamente cadenas a cadenas, lo que implica una gran cantidad de copias detrás de las escenas.
>>> mylist = ['x', 3, 'b']
>>> m = map(str, mylist)
>>> m
['x', '3', 'b']
>>> j = ', '.join(m)
>>> j
'x, 3, b'
En lugar de utilizar map
, me gustaría recomendar el uso de un generador de expresión con la capacidad de join
a aceptar un iterador:
def get_nice_string(list_or_iterator):
return "[" + ", ".join(str(x) for x in list_or_iterator) + "]"
Aquí, join
es una función miembro de la clase string str
. Toma un argumento: una lista (o un iterador) de cadenas, luego devuelve una nueva cadena con todos los elementos concatenados, en este caso, ,
.
Una buena optimización para Python 2, ya que map devuelve una lista en 2.x. Devuelve un generador en 3.x, por lo que no ayuda mucho allí. –
Me gustaría devolver '' "," .join (str (x) para x en list_or_iterator) .join ('[]') '' – eyquem
@eyquem: Inteligente, no he visto unirse usado así antes. Aún así, eso es un poco más opaco para un principiante (ya que está usando la propiedad de que una cadena es un contenedor iterable de cadenas de un carácter). –
Puede eliminar todos los caracteres no deseados de una cadena usando su translate()
method con None
para el argumento table
seguido de una cadena que contiene el carácter (s) que desea eliminar para su argumento deletechars
.
lst = ['x', 3, 'b']
print str(lst).translate(None, "'")
# [x, 3, b]
Si está utilizando una versión de Python 2.6 antes, tendrá que utilizar la función del módulo string
translate()
lugar debido a que la capacidad de pasar None
como argumento table
no se añadió hasta que Python 2.6 . El uso que tiene este aspecto:
import string
print string.translate(str(lst), None, "'")
usando la función string.translate()
también trabajará en 2.6+, lo que su uso podría ser preferible.
Alas: '' lst = ["no es", 3, 'b'] '' ==> '' ["it isnt", 3, b] '' y también con '' lst = ['it isn \ 't', 3, 'b'] ' – eyquem
@eyquem: Sí, evitar la eliminación de caracteres que en realidad son parte de sus datos (en lugar de ser estrictamente utilizados para delimitarlos) requeriría naturalmente un poco más de detalle/lógica diferente si es una posibilidad. – martineau
Este es un código simple, por lo que si es nuevo, debe comprenderlo con suficiente facilidad.
mylist = ["x", 3, "b"]
for items in mylist:
print(items)
Imprime todas ellas sin comillas, como usted quería.
Usando sólo de impresión:
>>> l = ['x', 3, 'b']
>>> print(*l, sep='\n')
x
3
b
>>> print(*l, sep=', ')
x, 3, b
Usando .format
de formato de cadenas,
mylist = ['x', 3, 'b']
print("[{0}]".format(', '.join(map(str, mylist))))
Salida:
[x, 3, b]
Explicación:
map
se utiliza para asignar cada elemento de la lista para string
tipo.,
como separador.[
y ]
en la declaración de impresión para mostrar las llaves de lista.Referencia: .format
for string formatting PEP-3101
Gracias que funciona muy bien. ¿Puedes explicar un poco en detalle qué estás haciendo en la segunda línea? Soy nuevo en Python. – Obaid
Está usando la función 'map' para llamar' str' para cada elemento de 'mylist', creando una nueva lista de cadenas que luego une en una cadena con' str.join'. Luego, usa el operador de formato de cadena '%' para sustituir la cadena en lugar de '% s' en' "[% s]" '. –
Otra forma de hacerlo es quizás un poco más moderno: '" [{0}] ". Format (", ".join (str (i) para i en mylist))' –