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?
Cette question a déjà des réponses:
Réponses
Trop de publicités?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']
ghostdog74
Points
86060
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
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']
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