386 votes

Convertir une liste Python avec des chaînes de caractères en minuscules ou en majuscules

J'ai une liste python variable qui contient les chaînes de caractères. Est-il une fonction python qui peut convertir toutes les chaînes en une seule passe en minuscules et vice versa, en majuscules?

650voto

YOU Points 44812

Il peut être fait avec des interprétations de la liste

>>> [x.lower() for x in ["A","B","C"]]
['a', 'b', 'c']
>>> [x.upper() for x in ["a","b","c"]]
['A', 'B', 'C']

ou avec la fonction map

>>> map(lambda x:x.lower(),["A","B","C"])
['a', 'b', 'c']
>>> map(lambda x:x.upper(),["a","b","c"])
['A', 'B', 'C']

74voto

ghostdog74 Points 86060
>>> map(str.lower,["A","B","C"])
['a', 'b', 'c']

68voto

Ned Deily Points 40248

En plus d'être plus facile à lire (pour beaucoup de gens), les interprétations de la liste gagner la course de vitesse, trop:

$ python2.6 -m timeit '[x.lower() for x in ["A","B","C"]]'
1000000 loops, best of 3: 1.03 usec per loop
$ python2.6 -m timeit '[x.upper() for x in ["a","b","c"]]'
1000000 loops, best of 3: 1.04 usec per loop

$ python2.6 -m timeit 'map(str.lower,["A","B","C"])'
1000000 loops, best of 3: 1.44 usec per loop
$ python2.6 -m timeit 'map(str.upper,["a","b","c"])'
1000000 loops, best of 3: 1.44 usec per loop

$ python2.6 -m timeit 'map(lambda x:x.lower(),["A","B","C"])'
1000000 loops, best of 3: 1.87 usec per loop
$ python2.6 -m timeit 'map(lambda x:x.upper(),["a","b","c"])'
1000000 loops, best of 3: 1.87 usec per loop

22voto

paxdiablo Points 341644

Interprétations de la liste est de savoir comment je le ferais. Cet extrait de code ci-dessous montre comment convertir une liste de toutes les majuscules puis vers le bas:

$ python
Python 2.5.2 (r252:60911, Dec  2 2008, 09:26:14)
[GCC 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)] on cygwin
Type "help", "copyright", "credits" or "license" for more information.

>>> list = ["one", "two", "three"]
>>> list
['one', 'two', 'three']

>>> list = [element.upper() for element in list]
>>> list
['ONE', 'TWO', 'THREE']

>>> list = [element.lower() for element in list]
>>> list
['one', 'two', 'three']

7voto

gnibbler Points 103484

Pour cet exemple, la compréhension est plus rapide

$ python -m timeit -s '=["un","deux","trois"]*1000' '[x.supérieure à x dans s]'
1000 boucles, best of 3: 809 usec par boucle

$ python -m timeit -s '=["un","deux","trois"]*1000' de 'carte(str.supérieure,s)'
1000 boucles, best of 3: 1.12 msec par boucle

$ python -m timeit -s '=["un","deux","trois"]*1000' 'map(lambda x:x.upper(),s)'
1000 boucles, best of 3: 1.77 msec par boucle

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X