length index comprehension python list

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)