Me gustaría saber si hay una mejor manera de imprimir todos los objetos en una lista de Python que esta:
myList = [Person("Foo"), Person("Bar")]
print("\n".join(map(str, myList)))
Foo
Bar
Leo de esta manera no es muy bueno:
myList = [Person("Foo"), Person("Bar")]
for p in myList:
print(p)
¿No hay algo como:
print(p) for p in myList
Si no es así, mi pregunta es ... ¿por qué? Si podemos hacer este tipo de cosas con listas completas, ¿por qué no como una simple declaración fuera de una lista?
python
list
printing
list-comprehension
Guillaume Voiron
fuente
fuente
for p in myList
"no era realmente bueno"?Respuestas:
Suponiendo que está utilizando Python 3.x:
Puede obtener el mismo comportamiento en Python 2.x usando
from __future__ import print_function
, como lo señaló mgilson en los comentarios.Con la declaración de impresión en Python 2.x, necesitará una iteración de algún tipo, con respecto a su pregunta sobre
print(p) for p in myList
no funcionar, puede usar lo siguiente que hace lo mismo y sigue siendo una línea:Para una solución que usa
'\n'.join()
, prefiero listas por comprensión y generadores, pormap()
lo que probablemente usaría lo siguiente:fuente
from __future__ import print_function
hacerlo en python2.6 y versiones posteriores.map()
y un generador? El creador de Python también prefiere las comprensiones y los generadoresmap()
.[F(x) for x in S]
es más claro quemap(F, S)
. El rendimiento no se aborda allí, pero esperaría que la diferencia de velocidad sea insignificante. De todos modos, estaba confundido por el voto negativo, ¡lo siento, asumí que eras tú!Uso esto todo el tiempo :
fuente
format()
, reemplacestr(x)
con una cadena de formato:print " ".join(["{:02d}".format(x) for x in l])
[print(a) for a in list]
dará un montón de tipos Ninguno al final, aunque imprime todos los elementosfuente
Para Python 2. *:
Si sobrecarga la función __str __ () para su clase Person, puede omitir la parte con map (str, ...). Otra forma de hacer esto es crear una función, como escribiste:
Hay en Python 3. * el argumento sep para la función print (). Eche un vistazo a la documentación.
fuente
Ampliando la respuesta de @ lucasg (inspirada en el comentario que recibió):
Para obtener una salida de lista formateada , puede hacer algo en este sentido:
Ahora
", "
proporciona el separador (solo entre elementos, no al final) y la cadena de formato'02d'
combinada con%x
da una cadena formateada para cada elementox
; en este caso, formateado como un número entero con dos dígitos, llenado a la izquierda con ceros.fuente
Para mostrar cada contenido, uso:
Ejemplo de uso en una función:
Espero haber ayudado.
fuente
Creo que esto es lo más conveniente si solo desea ver el contenido de la lista:
Simple, fácil de leer y se puede utilizar junto con la cadena de formato.
fuente
La pregunta de OP es: ¿existe algo como seguir? Si no, ¿por qué?
la respuesta es, existe, que es:
Básicamente, utilícelo
[]
para la comprensión de listas y elimíneloprint
para evitar la impresiónNone
. Para ver por qué lasprint
impresionesNone
ven estofuente
Recientemente hice un generador de contraseñas y, aunque soy MUY NUEVO en Python, lo preparé como una forma de mostrar todos los elementos en una lista (con pequeñas ediciones para satisfacer sus necesidades ...
Como dije, SOY MUY NUEVO en Python y estoy seguro de que esto es demasiado complicado para un experto, pero solo estoy aquí para otro ejemplo.
fuente
Suponiendo que está bien con la impresión de su lista [1,2,3], entonces una forma fácil en Python3 es:
Ejecutar esto produce el siguiente resultado:
fuente