index - python list to string
Convierta una lista de Python con cadenas en minúsculas o mayúsculas (7)
Tengo una variable de lista de python que contiene cadenas. ¿Hay una función de python que pueda convertir todas las cadenas en una sola pasada a minúscula y viceversa, en mayúscula?
Además de ser más fácil de leer (para muchas personas), las comprensiones de la lista 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
La comprensión de la lista es cómo lo haría, es la manera "Pythonic". La siguiente transcripción muestra cómo convertir una lista en mayúsculas y luego hacia abajo:
pax@paxbox7:~$ python3
Python 3.5.2 (default, Nov 17 2016, 17:05:23)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> x = ["one", "two", "three"] ; x
[''one'', ''two'', ''three'']
>>> x = [element.upper() for element in x] ; x
[''ONE'', ''TWO'', ''THREE'']
>>> x = [element.lower() for element in x] ; x
[''one'', ''two'', ''three'']
Para esta muestra, la comprensión es más rápida
$ python -m timeit -s ''s=["one","two","three"]*1000'' ''[x.upper for x in s]'' 1000 loops, best of 3: 809 usec per loop $ python -m timeit -s ''s=["one","two","three"]*1000'' ''map(str.upper,s)'' 1000 loops, best of 3: 1.12 msec per loop $ python -m timeit -s ''s=["one","two","three"]*1000'' ''map(lambda x:x.upper(),s)'' 1000 loops, best of 3: 1.77 msec per loop
un estudiante preguntando, otro estudiante con el mismo problema respondiendo :))
fruits=[''orange'', ''grape'', ''kiwi'', ''apple'', ''mango'', ''fig'', ''lemon'']
newList = []
for fruit in fruits:
newList.append(fruit.upper())
print(newlist)
Se puede hacer con listas de comprensión. Estos básicamente toman la forma de [function-of-item for item in some-list]
. Por ejemplo, para crear una nueva lista en la que todos los elementos estén en minúsculas (o mayúsculas en el segundo fragmento), usaría:
>>> [x.lower() for x in ["A","B","C"]]
[''a'', ''b'', ''c'']
>>> [x.upper() for x in ["a","b","c"]]
[''A'', ''B'', ''C'']
También puedes usar la función de map
:
>>> map(lambda x:x.lower(),["A","B","C"])
[''a'', ''b'', ''c'']
>>> map(lambda x:x.upper(),["a","b","c"])
[''A'', ''B'', ''C'']
>>> map(str.lower,["A","B","C"])
[''a'', ''b'', ''c'']
mylist = [''Mixed Case One'', ''Mixed Case Two'', ''Mixed Three'']
print map(lambda x: x.lower(), mylist)
print map(lambda x: x.upper(), mylist)