Python impression de la liste (mise en forme)
Avoir une liste:
x=['s',2,'3',4,5,6]
Je peux l'imprimer comme ceci:
for i in x:
print i
Cependant, comme je l'ai découvert, c'est un peu plus rapide de simplement utiliser une instruction print, comme ceci (ci-dessous comment je suis arrivé à ce point):
print "\n".join( i.__class__==string and i or str(i) for i in x )
Étant donné que je veux utiliser la deuxième option et que je voudrais la sortie à quelque chose comme (je tiens aussi à ajouter un compteur):
v1: s v2: 2 v3: 3 etc
Voici ce que j'ai essayé:
1)
count=0
print (("v"+str(++count)).join(":%s "% i for i in x ) )
résultat est::s, v0:2, v0:3, v0:4, v0:5, v0:6,
Vraiment pas ce que je vise.
a) str(++count) imprime rien, count++ donne synthax error
b) première v
est nulle part pour être trouvée, depuis join
dans ce cas, ajoute séparateurs et il n'est pas nécessaire pour le premier élément
2)
print ( ["v"+str(++count)+ ":%s, "% i for i in x ] )
Donne ['v0:s, ', 'v0:2, ', 'v0:3, ', 'v0:4, ', 'v0:5, ', 'v0:6, ']
Mieux, mais toujours pas de counter
et je ne veux pas le []
montré
3)
Tout gratter et redémarrer:
print ",".join(i for i in x )
ne peut pas concaténer string
et int
il devient donc:
print ",".join(i.__class__==string and i or str(i) for i in x )
qui donne:
s,2,3,4,5,6
Et c'est là où je suis bloqué.
Vous devez vous connecter pour publier un commentaire.
Je suggère d'utiliser
énumérer
:Alors que je suis d'accord avec @ARodas réponse, je tiens également à souligner que:
Vous devez assurez-vous que l'impression est vraiment un goulot d'étranglement dans votre programme avant de commencer à optimiser (très rarement).
expr1 and expr2 or expr3
a été utilisé avant le Python 2.5, lorsqueexpr2 if expr1 else expr3
opérateur ternaire a été introduit. Si vous ne ciblez pas de Py <= 2.4,if else
est préférable.Au lieu de
i.__class__==string
il est préférable d'écrireisinstance(i, string)
(ce qui eststring
, de toute façon? Vouliez-vous direstr
?).En outre, vous n'avez pas vraiment besoin de vérifier que:
str()
d'une chaîne retourne cette chaîne.Il n'y a pas de
++
opérateur en Python.++count == +(+count) == count
.