Réponses:
Dans Python 2:
mylist = ['x', 3, 'b']
print '[%s]' % ', '.join(map(str, mylist))
En Python 3 (où printest une fonction intégrée et non plus une fonction de syntaxe):
mylist = ['x', 3, 'b']
print('[%s]' % ', '.join(map(str, mylist)))
Les deux reviennent:
[x, 3, b]
Cela utilise la map()fonction pour appeler str pour chaque élément de mylist , créant une nouvelle liste de chaînes qui est ensuite jointe en une chaîne avec str.join(). Ensuite, l' %opérateur de mise en forme de chaîne remplace la chaîne par au lieu de %sin "[%s]".
mapfonction à appeler strpour chaque élément de mylist, créant une nouvelle liste de chaînes qu'il joint ensuite en une chaîne avec str.join. Ensuite, il utilise l' %opérateur de mise en forme de chaîne pour remplacer la chaîne dans au lieu de %sin "[%s]".
"[{0}]".format(", ".join(str(i) for i in mylist))
map(f, xs)(ou imapen python2.x) à (f(x) for x in xs), quand fest un appelable prédéfini; qui a tendance à exécuter moins de bytecodes et est généralement plus compact. Certainement pas map(lambda x:..., xs) c'est bien pire que(... for x in xs)
C'est un code simple, donc si vous êtes nouveau, vous devriez le comprendre assez facilement.
mylist = ["x", 3, "b"]
for items in mylist:
print(items)
Il les imprime tous sans guillemets, comme vous le vouliez.
En utilisant uniquement l'impression:
>>> l = ['x', 3, 'b']
>>> print(*l, sep='\n')
x
3
b
>>> print(*l, sep=', ')
x, 3, b
Si vous utilisez Python3:
print('[',end='');print(*L, sep=', ', end='');print(']')
print(end='['); print(*l, sep=', ', end=']\n')
Au lieu d'utiliser map, je recommanderais d'utiliser une expression de générateur avec la capacité d' joinaccepter un itérateur:
def get_nice_string(list_or_iterator):
return "[" + ", ".join( str(x) for x in list_or_iterator) + "]"
Voici joinune fonction membre de la classe string str. Il prend un argument: une liste (ou itérateur) de chaînes, puis retourne une nouvelle chaîne avec tous les éléments concaténés par, dans ce cas ,,.
", ".join( str(x) for x in list_or_iterator).join('[]')
Vous pouvez supprimer tous les caractères indésirables d'une chaîne en utilisant sa translate()méthode avec Nonepour l' tableargument suivi d'une chaîne contenant le (s) caractère (s) que vous souhaitez supprimer pour son deletecharsargument.
lst = ['x', 3, 'b']
print str(lst).translate(None, "'")
# [x, 3, b]
Si vous utilisez une version de Python antérieure à la 2.6, vous devrez utiliser la fonction stringdu module à la translate()place car la possibilité de passer en Nonetant tablequ'argument n'a été ajoutée qu'à partir de Python 2.6. Son utilisation ressemble à ceci:
import string
print string.translate(str(lst), None, "'")
L'utilisation de la string.translate()fonction fonctionnera également dans 2.6+, donc son utilisation pourrait être préférable.
lst = ["it isn't", 3, 'b']==> ["it isnt", 3, b]et aussi aveclst = ['it isn\'t', 3, 'b']
Voici une session interactive montrant certaines des étapes du one-liner de @ TokenMacGuy. Il utilise d'abord la mapfonction pour convertir chaque élément de la liste en une chaîne (en fait, il crée une nouvelle liste, ne convertit pas les éléments de l'ancienne liste). Ensuite, il utilise la méthode string joinpour combiner ces chaînes avec', ' entre elles. Le reste n'est que du formatage de chaîne, ce qui est assez simple. (Modifier: cette instance est simple; le formatage des chaînes en général peut être quelque peu complexe.)
Notez que l'utilisation joinest un moyen simple et efficace de créer une chaîne à partir de plusieurs sous-chaînes, beaucoup plus efficace que de le faire en ajoutant successivement des chaînes aux chaînes, ce qui implique beaucoup de copie en arrière-plan.
>>> mylist = ['x', 3, 'b']
>>> m = map(str, mylist)
>>> m
['x', '3', 'b']
>>> j = ', '.join(m)
>>> j
'x, 3, b'
Utilisation .formatpour le formatage de chaîne,
mylist = ['x', 3, 'b']
print("[{0}]".format(', '.join(map(str, mylist))))
Production:
[x, 3, b]
Explication:
mapest utilisé pour mapper chaque élément de la liste à stringtaper.,comme séparateur.[et ]dans l'instruction print pour afficher les accolades de la liste..formatla manière la plus pythonique. Mais, bien sûr, j'accepte les désaccords. ;)
J'ai été inspiré par @AniMenon pour écrire une solution pythonique plus générale.
mylist = ['x', 3, 'b']
print('[{}]'.format(', '.join(map('{}'.format, mylist))))
Il n'utilise que la formatméthode. Aucune trace de str, et il permet un réglage fin du format des éléments. Par exemple, si vous avez des nombres flottants comme éléments de la liste, vous pouvez ajuster leur format, en ajoutant un spécificateur de conversion, dans ce cas:.2f
mylist = [1.8493849, -6.329323, 4000.21222111]
print("[{}]".format(', '.join(map('{:.2f}'.format, mylist))))
La sortie est assez correcte:
[1.85, -6.33, 4000.21]
print(["Sam"])appellerepr("Sam"), qui retourne'Sam'(avec les guillemets), contrairement à quand vous appelezprint("Sam")et python appellestr("Sam")qui retourneSam(sans les guillemets). Voir la différence entrestretreprou Pythonstretlists pour plus d'informations.