Python -snaren zijn onveranderlijke sequenties, dus de meest directe aanpak is om een omgekeerde kopie te maken. De Slice -syntaxis leest elke reeks van rechts naar links wanneer u een negatieve stap gebruikt, en het is de snelste manier om een string in typische gevallen om te keren. Voor gebruikers-zichtbare tekst met emoji, vlaggen en gecombineerde tekens, reverse grafemeclusters in plaats van onbewerkte codepunten om corrumperende symbolen te voorkomen.
Methode 1 - Omgekeerd met snijden (idiomatisch en snel)
Dit gebruikt de standaard plakvorm[start:stop:step], waar een stap van-1loopt van het eindje van eind tot start. Zie Python's reeks snijden in de documenten voor strings en sequenties.
Stap 1:Definieer de invoerreeks.
text = "Hello World"Stap 2:Maak de omgekeerde string met een omgekeerde plak.
rev = text[::-1]Stap 3:Gebruik of druk het resultaat af.
print(rev) # dlroW olleHOptioneel (veel korte snaren):Precomputeer het omgekeerde plak eenmaal en hergebruik het.
Stap 1:Maak een herbruikbaar reverse-slice object.
R = slice(None, None, -1)Stap 2:Breng het herhaaldelijk aan op snaren.
for s in ["abc", "racecar", "python"]:
print(s[R])Methode 2 - Gebruikreversed()metjoin()(leesbaar en flexibel)
De ingebouwde iteratorreversed()Retourneert tekens in omgekeerde volgorde, die u kunt meedoen aan een nieuwe tekenreeks. Zie de officiële documenten voor omgekeerde ().
Stap 1:Koop een reverse iterator over de string.
it = reversed("Hello World")Stap 2:Doe mee met de tekens in een string.
rev = "".join(it)
print(rev) # dlroW olleHMethode 3 - Omgekeerd met een lus (expliciet, gemakkelijkst te traceren)
Dit toont de mechanica maar is langzamer omdat snaren onveranderlijk zijn (elke aaneenschakeling creëert een nieuwe string).
Stap 1:Initialiseer een accumulator.
rev = ""Stap 2:Bereid elk personage voor om het omgekeerde te bouwen.
for ch in "Hello World":
rev = ch + revStap 3:Gebruik of druk het resultaat af.
print(rev) # dlroW olleHMethode 4-Reverse Grapheme-clusters voor correcte emoji en accenten (Unicode-Safe)
Sommige zichtbare "tekens" zijn grafeme-clusters gemaakt van meerdere codepunten (bijvoorbeeld vlaggen, huidtonenmodificaties en het combineren van accenten). Het omkeren van ruwe codepunten kan de betekenis veranderen, zoals het veranderen van de Britse vlag in BG. Unicode Grapheme -clustergrenzen worden gedefinieerd door UAX #29.
Stap 1:Installeer een bibliotheek die Grapheme -clusters kan herhalen.
pip install graphemeStap 2:Import de bibliotheek.
Meer informatie:
import graphemeStap 3:Split de string in grafeme clusters.
clusters = list(grapheme.graphemes("👈🏾👆 🇬🇧 test"))Stap 4:Keer de clusters om en sluit ze terug in een string.
rev = "".join(clusters[::-1])
print(rev)Tip:Vergelijk de resultaten om te zien waarom dit ertoe doet.
# Code point reversal (may be wrong for some emoji):
print("🇬🇧"[::-1]) # Often shows 🇧🇬
# Grapheme-aware reversal (preserves graphemes as units):
import grapheme
print("".join(list(grapheme.graphemes("🇬🇧"))[::-1])) # Stays 🇬🇧Wanneer u elke methode moet gebruiken
- Gebruik snijden voor de meeste snaren; Het is idiomatisch en snel.
- Gebruik
reversed()+join()Als u de voorkeur geeft aan iterators of moet aansluiten op API's die iterables verwachten. - Gebruik Grapheme-bewuste omkering voor gebruikersgerichte tekst met emoji, vlaggen, huidtinten of het combineren van merken.
Kies snijden voor prestaties en eenvoud en schakel over naar grafeme-bewuste omkering wanneer de juistheid voor emoji en accenten ertoe doet.














