339 Stimmen

Eine Liste mit Zeichenketten in Klein- oder Großbuchstaben umwandeln

Ich habe eine Python-Listenvariable, die Zeichenketten enthält. Gibt es eine Funktion, die alle Zeichenketten in einem Durchgang in Kleinbuchstaben und umgekehrt in Großbuchstaben umwandeln kann?

570voto

YOU Punkte 113320

Dies kann geschehen mit Listenauffassungen

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

oder mit dem map Funktion

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

63voto

Ned Deily Punkte 81039

Abgesehen davon, dass sie (für viele Menschen) leichter zu lesen sind, gewinnen Listen auch das Geschwindigkeitsrennen:

$ 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

62voto

ghostdog74 Punkte 305138
>>> list(map(str.lower,["A","B","C"]))
['a', 'b', 'c']

20voto

paxdiablo Punkte 809679

Ich würde es so machen, dass die Liste verstanden wird, das ist der "pythonische" Weg. Das folgende Transkript zeigt, wie man eine Liste in Großbuchstaben und dann wieder in Kleinbuchstaben umwandelt:

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']

6voto

John La Rooy Punkte 278961

Bei diesem Beispiel ist die Verständigung am schnellsten

$ 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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X