Python-Programme für String-Operationen
In diesem Lernprogramm schreiben Sie Python-Programme, um häufig gestellte Fragen zu lösen String-Operationen.
Sie erfahren, wie Sie überprüfen, ob Python-Strings vorhanden sind Palindrome, Anagramme, und sind in der Titelfall.
Python-Strings: Ein kurzer Überblick
In Python sind Zeichenfolgen leistungsstarke integrierte Datentypen. Sie können eine Folge von Zeichen speichern.
Indizierung in Python-Strings: Wie alle Python-Iterables sind auch Strings nullindiziert. Die gültigen Indizes für einen String der Länge N sind also 0, 1, 2 bis N – 1.
Python unterstützt auch die negative Indizierung, um auf Elemente vom Ende der Zeichenfolge zuzugreifen. -1 ist also der Index des letzten Zeichens in der Zeichenfolge, -2 ist der Index des vorletzten Zeichens in der Zeichenfolge und so weiter.
Unveränderlichkeit von Python-Strings: Außerdem sind Strings in Python unveränderlich, also Sie kann keine ändern Sie sie an Ort und Stelle. Sie können jedoch mehrere String-Methoden darauf aufrufen und Kopien von Strings mit dem gewünschten Ergebnis erhalten.
Nachdem wir nun die Grundlagen von Python-Strings überprüft haben, wollen wir damit fortfahren, einige einfache, aber interessante Probleme zu lösen.
Lasst uns beginnen.
Check if a Python String is a Palindrome
Aufgabenstellung: : Überprüfen Sie bei einem gegebenen Python-String, ob es sich um ein Palindrom handelt oder nicht.
Wenn ja, True zurückgeben; Andernfalls geben Sie False zurück.
Unser erstes Problem besteht also darin, zu überprüfen, ob eine bestimmte Zeichenfolge ein Palindrom ist oder nicht.
A Palindrom ist ein String, der sowohl von links nach rechts als auch von rechts nach links gelesen wird. Lassen Sie uns ein paar Beispiele auflisten: racecar, refer, level, madam, radar und so weiter.
Hier sind die Schritte, um dieses Problem zu lösen:
- Erhalten ein umgekehrte Kopie der Zeichenfolge und speichern Sie sie bei Bedarf in einer anderen Variablen.
- Vergleichen Sie die Werte der ursprünglichen Zeichenfolge und der umgekehrten Zeichenfolge.
- Wenn sie gleich sind, ist die Zeichenfolge ein Palindrom. Also zurück Wahr, und stoppen.
- Wenn die ursprüngliche und die umgekehrte Kopie nicht gleich sind, ist die Zeichenfolge kein Palindrom. Wir sollten also zurückkehren falsch.
Die Schlüsseloperation besteht darin, eine umgekehrte Kopie der Zeichenfolge zu erhalten. In Python gibt es verschiedene Möglichkeiten, dies zu tun.
Wir werden jedoch zwei Ansätze durchgehen:
- Die Saitenschneiden
- Verwendung der rückgängig gemacht() Funktion und die beitreten() Methode
So kehren Sie einen Python-String mit Slicing um
Die Syntax <any_str>[start: stop: step]
gibt einen Teil des Strings zurück <any_str>
aus start
bis, aber nicht inklusive stop
, mit Schrittweite step
.
- Wenn Sie weglassen
start
, beginnt das Slice am Anfang der Zeichenfolge. - Wenn Sie die nicht angeben
stop
index erstreckt sich der Slice bis zum Ende des Strings. - Und negative Werte von
step
kann verwendet werden, um Slices ab dem Ende der Zeichenfolge zurückzugeben.
So <any_str>[::-1]
gibt eine umgekehrte Kopie der Zeichenfolge zurück.
Die folgende Codezelle enthält die Definition der Funktion is_palindrome()
.
Es nimmt eine Zeichenfolge als Argument an und kehrt zurück True
or False
je nachdem, ob es ein Palindrom ist oder nicht.
Hier haben wir String Slicing verwendet, um eine umgekehrte Kopie des Strings zu erhalten.
def is_palindrome(this_str):
rev_str = this_str[::-1]
if (this_str == rev_str):
return True
else:
return False
▶️ Nachdem wir die Funktion definiert haben, können wir fortfahren und mit einer beliebigen gültigen Zeichenfolge als Argument aufrufen.
is_palindrome("racecar")
True
In der obigen Codezelle racecar
ist ein Palindrom. Also die Funktion is_palindrome()
Rückgabe True
wie erwartet.
Versuchen Sie nun, die Funktion mit einer beliebigen Zeichenfolge aufzurufen, die kein Palindrom ist, z river
.
is_palindrome("river")
False
Und wie Sie sehen können, kehrt es zurück False
, welches ist richtig. ✅
Wie man einen Python-String mit reversed() und join() umkehrt
In Python können Sie die join()
Methode zusammen mit der reversed()
Funktion zum Umkehren einer Zeichenfolge.
- Der
reversed()
Die Funktion gibt einen umgekehrten Iterator durch die Zeichen in der Zeichenfolge zurück. - Der
join()
-Methode kann dann verwendet werden, um diese Zeichen in umgekehrter Reihenfolge zu verbinden.
Mit der obigen Methode können Sie die neu schreiben is_palindrome()
Funktion wie in der Codezelle unten.
def is_palindrome(this_str):
rev_str = ''.join(reversed(this_str))
if (this_str == rev_str):
return True
else:
return False
Sie können auch die Tasten is_palindrome()
Funktion innen Listenverständnis um alle Palindrome aus einer längeren Liste von Zeichenfolgen zu sammeln.
str_list = ["refer","blue","level","12321","dragon"]
palindromes = [string for string in str_list if is_palindrome(string)]
print(palindromes)
# Output
['refer', 'level', '12321']
So funktioniert der obige Code:
- Durchqueren
str_list
, Anrufis_palindrome()
auf jeder Saite. - If
is_palindrome()
RückgabeTrue
, fügen Sie die Zeichenfolge hinzupalindromes
Liste.
Wie Sie in der obigen Ausgabe sehen können, palindromes
ist eine Liste aller palindromischen Zeichenketten in str_list
.
Check if Two Python Strings are Anagrams
Eine weitere beliebte Frage, auf die Sie in Interviews stoßen können, ist zu überprüfen, ob ein Paar Saiten vorhanden sind oder nicht str1
und str2
sind Anagramme.
Zwei Saiten sollen es sein Anagramme wenn die Anzahl der Zeichen in den beiden Zeichenfolgen genau gleich ist. Das bedeutet, dass Sie eine der Zeichenfolgen erhalten können permutieren or Neuanordnung die Zeichen in der anderen Zeichenfolge.
Beispiele für Anagramme sind State-Taste, Save-Vase, Elbow-Below und so weiter.
So suchen Sie mit Counter Object in Python nach Anagrammen
Eine einfache und intuitive Möglichkeit besteht darin, die Anzahl der Vorkommen jedes Zeichens in den beiden Zeichenfolgen zu berechnen. Und dann prüfen, ob die Zählungen gleich sind.
Dies geht umso einfacher mit der Counter
Objekt aus dem itertools
Modul. Das Zähler -Objekt gibt ein Python-Wörterbuch zurück: mit den Zeichen als Tasten und das entsprechende gilt als die Werte.
Betrachten Sie die Saiten "save"
und "vase"
wie unten gezeigt.
str1 = "save"
str2 = "vase"
Hier c1
und c2
sind Zählerobjekte, die die Zeichenanzahl der Zeichenfolgen enthalten str1
und str2
beziehungsweise.
from collections import Counter
c1 = Counter(str1)
c2 = Counter(str2)
print(c1)
print(c2)
c1 == c2
# Output
Counter({'s': 1, 'a': 1, 'v': 1, 'e': 1})
Counter({'v': 1, 'a': 1, 's': 1, 'e': 1})
True
c1 == c2
Rückgabe True
as str1
und str2
sind Anagramme.
Mit dieser Logik können wir nun fortfahren und die Funktion definieren are_anagrams()
mit zwei Parametern word1
und word2
. Im Funktionskörper prüfen wir, ob Counter(word1) == Counter(word2)
.
def are_anagrams(word1, word2):
if Counter(word1) == Counter(word2):
return True
else:
return False
▶️ Rufen Sie zur Überprüfung an are_anagrams()
mit str1
, str2
als Argumente. Als str1
und str2
Anagramme sind („save“ und „vase“), kehrt die Funktion zurück True
, welches ist richtig.
are_anagrams(str1, str2)
True
So suchen Sie mit sortierten Kopien von Zeichenfolgen nach Anagrammen
Es gibt eine andere Möglichkeit, dies zu tun.
Wenn zwei Zeichenfolgen Anagramme sind, dann ihre sortierte Exemplare sind gleich.
Also können wir die Funktion umschreiben are_anagrams()
um zu überprüfen, ob die sortierte Version von str1
ist dasselbe wie die sortierte Kopie von str2
. Wenn sie gleich sind, dann sind die beiden Zeichenketten Anagramme; sonst sind sie es nicht.
Unter Verwendung der obigen Methode zum Überprüfen der Gleichheit sortierter Kopien können wir die Funktion umschreiben are_anagrams()
wie folgt.
def are_anagrams(word1, word2):
if sorted(word1) == sorted(word2):
return True
else:
return False
Lassen Sie uns nun einige Funktionsaufrufe durchführen.
- Die Zeichenfolgen „elbow“ und „below“ sind Anagramme und die Funktion
are_anagrams()
RückgabeTrue
. - Und „state“ und „tasted“ sind keine Anagramme, und die Funktion kehrt zurück
False
.
are_anagrams("below","elbow")
True
are_anagrams("state","tasted")
False
Check if a Python String is in Title Case
Hier ist unsere letzte Frage für dieses Tutorial.
Aufgabenstellung: : Gegeben eine Zeichenkette: der Name einer Person – mit Vor- und Nachname.
Sie müssen prüfen, ob der Anfangsbuchstabe sowohl des Vor- als auch des Nachnamens groß geschrieben wird.
Diese Art der Groß- und Kleinschreibung, bei der der erste Buchstabe jedes Wortes großgeschrieben wird, wird als Großschreibung bezeichnet Titelfall.
Sie müssen also prüfen, ob der Name im Titel geschrieben ist:
1. Wenn ja, gib eine Meldung aus, dass die Formatierung in Groß-/Kleinschreibung erfolgt.
2. Anderenfalls gib eine Kopie der Zeichenfolge zurück, die im Titelfall formatiert ist
- Python hat eine eingebaute String-Methode
istitle()
, die überprüft, ob eine Zeichenfolge im Titelfall ist.
<str>.istitle()
RückgabeTrue
wenn die Saite<str>
wird im Titelfall formatiert, andernfalls kehrt es zurückFalse
.
- Und die String-Methode von Python
title()
gibt eine Kopie der im Titel formatierten Zeichenfolge zurück.
Jetzt können Sie diese beiden Methoden verwenden, um das Problem zu lösen.
Definieren Sie eine Funktion check_titlecase()
das akzeptiert name
als Argument.
- Sie können die anrufen
istitle()
-Methode für die Eingabezeichenfolge, um zu prüfen, ob sie in Groß-/Kleinschreibung formatiert ist. - If
True
, können Sie drucken, dass die Zeichenfolge bereits im Titelfall ist. - Andernfalls können Sie die anrufen
title()
-Methode und geben eine Kopie der Zeichenfolge im Titelfall zurück.
Die folgende Codezelle zeigt die Definition der check_titlecase()
Funktion.
def check_titlecase(name):
if name.istitle():
print(f"'{name}' is already formatted in title case.")
else:
return name.title()
Lassen Sie uns jetzt anrufen check_titlecase()
Methode mit einem Argument.
check_titlecase("jane smith")
# Output
Jane Smith
In der obigen Ausgabe können Sie sehen, dass sich die Zeichenfolge „Jane Smith“ jetzt in der Groß-/Kleinschreibung des Titels befindet.
▶️ Nehmen wir ein weiteres Beispiel.
check_titlecase("agatha Christie")
# Output
Agatha Christie
Rufen wir die Funktion dieses Mal mit einem Titel-Case-String auf.
check_titlecase("Grace Hopper")
# Output
'Grace Hopper' is already formatted in title case.
Wir werden benachrichtigt, dass die Zeichenfolge im Titelformat formatiert ist und die Funktion wie erwartet funktioniert.
Fazit
Lassen Sie uns nun die Probleme zusammenfassen, die wir bisher besprochen haben.
- Um zu überprüfen, ob eine Zeichenfolge ein Palindrom ist, überprüfen Sie, ob die Zeichenfolge und ihre umgekehrte Version gleich sind. Sie können Stringslicing oder integrierte Methoden verwenden, um Strings umzukehren.
- Um zu überprüfen, ob zwei Zeichenfolgen Anagramme sind, überprüfen Sie, ob ihre sortierten Kopien gleich sind. Und um einen String zu sortieren, verwenden Sie die eingebaute Funktion sorted().
- Um zu überprüfen, ob ein Name im Titel geschrieben ist, verwenden Sie die Methode .isttitle() zum Überprüfen und die .Titel() -Methode, um eine Kopie der Zeichenfolge in Titelbuchstaben zu erhalten.
Ich hoffe, Ihnen hat dieses Tutorial zu Python-Strings gefallen. Als nächsten Schritt lernen Sie die Verwendung Listenverständnisse in Python oder lernen über die nicht gleich Operator bei Python.
Viel Spaß beim Lernen und Programmieren!🎉
- Markiert in:
- Python
Weitere großartige Lektüre zum Thema Entwicklung
-
10 Tools, um Ihre Google Sheets in eine API zu verwandelnShalabh Garg am 22. April 2022
-
Die 10 besten API-Entwicklungs- und TesttoolsDurga Prasad Acharya am 21. April 2022
-
NumPy reshape(): Wie man NumPy-Arrays in Python umformtBala Priya C am 26. April 2022
-
9 Bester WYSIWYG-Editor zur Integration in Ihre Anwendung [Entwicklerfreundlich]Durga Prasad Acharya am 19. April 2022
-
7 Programmiersprachen zur Verwendung in der DatenwissenschaftDaniel Diaz am 18. April 2022
-
So lernen Sie Solidität im Jahr 2022 – 11 Kurse/RessourcenDhruv Parmar am 14. April 2022