Convertir una lista con cadenas todas a minúsculas o mayúsculas [duplicar]

Resuelto user219126 asked hace 14 años • 13 respuestas

Tengo una variable de lista de Python que contiene cadenas. ¿Existe alguna función que pueda convertir todas las cadenas de una sola vez a minúsculas y viceversa, a mayúsculas?

user219126 avatar Nov 26 '09 12:11 user219126
Aceptado

Se puede hacer con listas por comprensión.

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

o con la mapfunción

>>> list(map(lambda x: x.lower(), ["A", "B", "C"]))
['a', 'b', 'c']
>>> list(map(lambda x: x.upper(), ["a", "b", "c"]))
['A', 'B', 'C']
YOU avatar Nov 26 '2009 05:11 YOU
>>> list(map(str.lower,["A","B","C"]))
['a', 'b', 'c']
ghostdog74 avatar Nov 26 '2009 05:11 ghostdog74

Además de ser más fácil de leer (para muchas personas), las listas por comprensión también ganan la carrera de velocidad:

$ 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
Ned Deily avatar Nov 26 '2009 05:11 Ned Deily