Gibt es eine einfache Möglichkeit, die Buchstaben in einer Zeichenfolge in Python alphabetisch zu sortieren?
So für:
a = 'ZENOVW'
Ich würde gerne zurückkehren:
'ENOVWZ'
Gibt es eine einfache Möglichkeit, die Buchstaben in einer Zeichenfolge in Python alphabetisch zu sortieren?
So für:
a = 'ZENOVW'
Ich würde gerne zurückkehren:
'ENOVWZ'
Antworten:
Du kannst tun:
>>> a = 'ZENOVW'
>>> ''.join(sorted(a))
'ENOVWZ'
''.join(sorted(a, reverse=True, key=str.lower))
dies verwendet werden kann, um eine umgekehrte Sortierung ohne Berücksichtigung der Groß- und Kleinschreibung durchzuführen. Könnte praktisch sein.
>>> a = 'ZENOVW'
>>> b = sorted(a)
>>> print b
['E', 'N', 'O', 'V', 'W', 'Z']
sorted
Gibt eine Liste zurück, sodass Sie sie erneut zu einer Zeichenfolge machen können, indem Sie join
:
>>> c = ''.join(b)
Dies verbindet die Elemente von b
zusammen mit einer leeren Zeichenfolge ''
zwischen jedem Element.
>>> print c
'ENOVWZ'
Die Sorted () -Lösung kann mit anderen Zeichenfolgen zu unerwarteten Ergebnissen führen.
Liste anderer Lösungen:
>>> s = "Bubble Bobble"
>>> ''.join(sorted(set(s.lower())))
' belou'
>>> s = "Bubble Bobble"
>>> ''.join(sorted(set(s)))
' Bbelou'
>>> s = "Bubble Bobble"
>>> ''.join(sorted(s))
' BBbbbbeellou'
Wenn Sie das Leerzeichen im Ergebnis entfernen möchten, fügen Sie in einem der folgenden Fälle die Funktion strip () hinzu:
>>> s = "Bubble Bobble"
>>> ''.join(sorted(set(s.lower()))).strip()
'belou'
Die Python-Funktion sorted
gibt ein ASCII-basiertes Ergebnis für eine Zeichenfolge zurück.
INKORREKT : Im folgenden Beispiel e
und d
liegt hinter H
und W
aufgrund des ASCII-Werts.
>>>a = "Hello World!"
>>>"".join(sorted(a))
' !!HWdellloor'
RICHTIG : Um die sortierte Zeichenfolge zu schreiben, ohne die Groß- und Kleinschreibung des Buchstabens zu ändern. Verwenden Sie den Code:
>>> a = "Hello World!"
>>> "".join(sorted(a,key=lambda x:x.lower()))
' !deHllloorW'
Wenn Sie alle Satzzeichen und Zahlen entfernen möchten. Verwenden Sie den Code:
>>> a = "Hello World!"
>>> "".join(filter(lambda x:x.isalpha(), sorted(a,key=lambda x:x.lower())))
'deHllloorW'
Der Code kann verwendet werden, um Zeichenfolgen in alphabetischer Reihenfolge zu sortieren, ohne eine eingebaute Python-Funktion zu verwenden
k = Eingabe ("Geben Sie eine beliebige Zeichenfolge erneut ein")
li = []
x = len(k)
for i in range (0,x):
li.append(k[i])
print("List is : ",li)
for i in range(0,x):
for j in range(0,x):
if li[i]<li[j]:
temp = li[i]
li[i]=li[j]
li[j]=temp
j=""
for i in range(0,x):
j = j+li[i]
print("After sorting String is : ",j)
Die Antwort mit der Funktion redu () hat mir sehr gut gefallen. Hier ist eine andere Möglichkeit, die Zeichenfolge mit accumulate () zu sortieren.
from itertools import accumulate
s = 'mississippi'
print(tuple(accumulate(sorted(s)))[-1])
sortiert (en) -> ['i', 'i', 'i', 'i', 'm', 'p', 'p', 's', 's', 's', 's' ]]
tuple (akkumulieren (sortiert (en)) -> ('i', 'ii', 'iii', 'iiii', 'iiiim', 'iiiimp', 'iiiimpp', 'iiiimpps', 'iiiimppss', 'iiiimppsss ',' iiiimppssss ')
Wir wählen den letzten Index (-1) des Tupels aus
sorted(a)
eine sortierte Liste zurückgegeben wird, sodass Sie für Zeichenfolgenvergleiche keine benötigenjoin()
(siehe die Antwort von askewchan unten).