Je voudrais savoir s'il existe une meilleure façon d'imprimer tous les objets dans une liste Python que celle-ci:
myList = [Person("Foo"), Person("Bar")]
print("\n".join(map(str, myList)))
Foo
Bar
Je lis de cette façon n'est pas vraiment bon:
myList = [Person("Foo"), Person("Bar")]
for p in myList:
print(p)
N'y a-t-il pas quelque chose comme:
print(p) for p in myList
Sinon, ma question est ... pourquoi? Si nous pouvons faire ce genre de choses avec des listes complètes, pourquoi pas comme une simple déclaration en dehors d'une liste?
python
list
printing
list-comprehension
Guillaume Voiron
la source
la source
for p in myList
n'était "pas vraiment bonne"?Réponses:
En supposant que vous utilisez Python 3.x:
Vous pouvez obtenir le même comportement sur Python 2.x en utilisant
from __future__ import print_function
, comme indiqué par mgilson dans les commentaires.Avec l'instruction print sur Python 2.x, vous aurez besoin d'une certaine itération, concernant votre question sur le fait de
print(p) for p in myList
ne pas fonctionner, vous pouvez simplement utiliser ce qui suit qui fait la même chose et est toujours une ligne:Pour une solution qui utilise
'\n'.join()
, je préfère les compréhensions de liste et les générateurs,map()
donc j'utiliserais probablement ce qui suit:la source
from __future__ import print_function
sur python2.6 et plus récent.map()
et un générateur? Le créateur de Python préfère également les compréhensions et les générateursmap()
.[F(x) for x in S]
c'est plus clair quemap(F, S)
. Les performances ne sont pas abordées ici, mais je m'attendrais à ce que la différence de vitesse soit négligeable. Quoi qu'il en soit, j'étais juste confus au sujet du vote négatif, désolé j'ai supposé que c'était vous!Je l'utilise tout le temps :
la source
format()
, remplacez lestr(x)
par une chaîne de format:print " ".join(["{:02d}".format(x) for x in l])
[print(a) for a in list]
donnera un tas de types Aucun à la fin bien qu'il imprime tous les élémentsla source
Pour Python 2. *:
Si vous surchargez la fonction __str __ () pour votre classe Person, vous pouvez omettre la partie avec map (str, ...). Une autre façon de procéder consiste à créer une fonction, comme vous l'avez écrit:
Il y a en Python 3. * l'argument sep pour la fonction print (). Jetez un œil à la documentation.
la source
Expansion de la réponse de @ lucasg (inspirée du commentaire qu'il a reçu):
Pour obtenir une sortie de liste formatée , vous pouvez faire quelque chose du genre:
Maintenant, le
", "
fournit le séparateur (uniquement entre les éléments, pas à la fin) et la chaîne de formatage'02d'
combinée avec%x
donne une chaîne formatée pour chaque élémentx
- dans ce cas, formatée comme un entier à deux chiffres, rempli à gauche de zéros.la source
Pour afficher chaque contenu, j'utilise:
Exemple d'utilisation dans une fonction:
J'espère que j'ai aidé.
la source
Je pense que c'est le plus pratique si vous voulez juste voir le contenu dans la liste:
Simple, facile à lire et peut être utilisé avec une chaîne de format.
la source
La question d'OP est: est -ce que quelque chose comme suivant existe, sinon pourquoi
La réponse est, il existe ce qui est:
Fondamentalement, utilisez
[]
pour la compréhension de liste etprint
évitez d'imprimerNone
. Pour voir pourquoi lesprint
impressionsNone
voient cecila source
J'ai récemment créé un générateur de mot de passe et bien que je sois TRÈS NOUVEAU en python, je l'ai fouetté comme un moyen d'afficher tous les éléments d'une liste (avec de petites modifications pour répondre à vos besoins ...
Comme je l'ai dit, IM TRÈS NOUVEAU en Python et je suis sûr que c'est un peu maladroit pour un expert, mais je suis juste ici pour un autre exemple
la source
En supposant que vous êtes d'accord avec l'impression de votre liste [1,2,3], alors un moyen simple en Python3 est:
L'exécution de ceci produit la sortie suivante:
la source