[PYTHON] Löse 100 Sprachverarbeitungsklopfen 2020 (00. Umgekehrte Reihenfolge der Zeichenketten)

Einführung

Versuchen wir, 100 natürliche Sprachen anzuklopfen, die bei Python auf der Straße beliebt sind. Ich denke, es gibt verschiedene Möglichkeiten, es zu lösen, deshalb möchte ich Ihnen verschiedene Möglichkeiten zeigen, es zu lösen. Natürlich ist es nicht möglich, alle Lösungen abzudecken. Wenn Sie Fragen zu "Es gibt eine solche Lösung" oder "Das ist falsch" haben, teilen Sie uns dies bitte in den Kommentaren mit.

Was ist 100 Sprachverarbeitung klopfen 2020?

Sprachverarbeitung 100 Knock 2020 ist das Inui Suzuki Laboratory der Tohoku University. /) Dies ist das Lehrmaterial, das in der Studiengruppe Programmiergrundforschung verwendet wird. Weitere Informationen finden Sie unter Über 100 Sprachverarbeitungsklopfen.

Link zum Qiita-Artikel

1. Frage 2. Frage 3. Frage 4. Frage 5. Frage 6. Frage 7. Frage 8. Frage 9. Frage 10. Frage
Kapitel 1 00 01 02 03 04 05 06 07 08 09
Kapitel 2 10 11 12 13 14 15 16 17 18 19
Kapitel 3 20 21 22 23 24 25 26 27 28 29
Kapitel 4 30 31 32 33 34 35 36 37 38 39
Kapitel 5 40 41 42 43 44 45 46 47 48 49
Kapitel 6 50 51 52 53 54 55 56 57 58 59
Kapitel 7 60 61 62 63 64 65 66 67 68 69
Kapitel 8 70 71 72 73 74 75 76 77 78 79
Kapitel 9 80 81 82 83 84 85 86 87 88 89
Kapitel 10 90 91 92 93 94 95 96 97 98 99

00. Umgekehrte Reihenfolge der Zeichenfolgen

Problem

[00. Umgekehrte Reihenfolge der Zeichenfolgen](https://nlp100.github.io/ja/ch01.html#00-%E6%96%87%E5%AD%97%E5%88%97%E3%81% Das Problem von AE% E9% 80% 86% E9% A0% 86) ist wie folgt.

Holen Sie sich eine Zeichenfolge, in der die Zeichen der Zeichenfolge "betont" umgekehrt angeordnet sind (vom Ende bis zum Anfang).

Antworten

Wenn Sie die Frage lesen, lautet die Antwort "Desserts", da es darum geht, eine Reihe von "gestressten" in umgekehrter Reihenfolge zu erhalten. Alle Antworten unten geben "Desserts" zurück, wenn der letzte Ausdruck ausgewertet wird.

einfach

Es gibt eine Methode, um es gehorsam am Anfang der Zeichenfolge hinzuzufügen. In Python können Sie Zeichenfolgen mit + kombinieren, um eine neue Zeichenfolge zu generieren.

#einfach
s = "stressed"

result = ""
for c in s:
    result = c + result
result #=> 'desserts'

Funktionell

Es ist zu einfach, um funktionsfähig zu sein, aber es kann durch eine Kombination von Funktionen ausgedrückt werden. Die Funktion "umgekehrt" gibt einen Iterator zurück, der bei einem Iterator in umgekehrter Reihenfolge abgerufen werden kann. Verketten Sie ihn daher mit leeren Zeichen, um das gewünschte Ergebnis zu erhalten.

#Funktionell
s = "stressed"

"".join(reversed(s)) #=> 'desserts'

Pythonic

Python-ähnlich zu sein heißt ** Pythonic **, aber ist dieser Code der pythonischste? Die Methode für den Zugriff auf eine Liste oder Zeichenfolge mit s [start: end: step] wird als Slicing bezeichnet. Die Angabe von "-1" für "Schritt" kehrt die Reihenfolge um. Es geht um "-1".

# Pythonic
s = "stressed"

s[::-1] #=> 'desserts'

Andere Antwort

Kombination

Es gibt auch die folgende Methode, die die oben genannten kombiniert. Wenn Sie am Ende oder am Anfang der Zeichenfolge etwas hinzufügen, wird es kopiert, und wenn Sie ein anderes Element als das Ende der Liste hinzufügen, wird es kopiert. Um dies zu vermeiden, füge ich am Ende der Liste ein Element hinzu und setze es dann mit "". Join ".

#Eine Kombination aus einfach und funktional
s = "stressed"

l = []
for c in reversed(s):
    l.append(c)
"".join(l) #=> 'desserts'

Nach Index drehen

Es gibt auch eine Methode, um gehorsam nach Index zu drehen. für n im Bereich (len (s)): ist eine der Syntaxen zum Drehen für einen Index. len (s) gibt die Länge des Strings s zurück und range (n) gibt den Iterator zum Durchlaufen von 0, ..., n-1 zurück.

#Führen Sie den Vorgang wie von Ihnen selbst umgekehrt aus
s = "stressed"

l = []
for n in range(len(s)):
    l.append(s[len(s)-n-1])
"".join(l) #=> 'desserts'

Es gibt eine andere Möglichkeit zum Indizieren. enumerate (s) ist ein Iterator zum Scannen von (0, s [0]), ..., (n-1, s [n-1]) mit n = len (s) Kehrt zurück. Ich benutze auch "_", um Variablen zu bezeichnen, die ich nicht benutze. Ich habe es einfach reingelegt.

#Führen Sie den Vorgang wie von Ihnen selbst umgekehrt aus
s = "stressed"

l = []
for n,_ in enumerate(s):
    l.append(s[len(s)-n-1])
"".join(l) #=> 'desserts'

Listeneinschlussnotation

Sie können auch in Listeneinschlussnotation schreiben.

s = "stressed"

l = [c for c in reversed(s)]
"".join(l) #=> 'desserts'

Wenn Sie jedoch sorgfältig darüber nachdenken, denken Sie möglicherweise, dass die Notation für die Einbeziehung des Generators in Ordnung ist.

s = "stressed"

g = (c for c in reversed(s))
"".join(g) #=> 'desserts'

Anschließend wird zum folgenden Funktionstyp zurückgekehrt.

#Funktionell
s = "stressed"

"".join(reversed(s)) #=> 'desserts'

Zurückblicken

Ich denke, jede Person hat ihren eigenen Geschmack, aber meine Lieblingsantwort ist unten.

#Eine Kombination aus einfach und funktional
s = "stressed"

l = []
for c in reversed(s):
    l.append(c)
"".join(l) #=> 'desserts'

Es ist leicht zu verstehen, dass die for-Anweisung das Gefühl vermittelt, sie in die entgegengesetzte Richtung drehen zu wollen, und dass Elemente gehorsam zur Liste hinzugefügt werden. Wenn ich ein tatsächliches Problem löse, schreibe ich oft den Prozess der Verarbeitung jedes Elements und füge es in eine andere Liste ein, so dass es die Grundform ist. " ". Join (umgekehrt (s)) und s [:: -1] eignen sich hervorragend zur Lösung dieses Problems, erschweren jedoch das Hinzufügen zusätzlicher Verarbeitung.

Recommended Posts

Löse 100 Sprachverarbeitungsklopfen 2020 (00. Umgekehrte Reihenfolge der Zeichenketten)
00. Umgekehrte Reihenfolge der Zeichenfolgen
100 Sprachverarbeitungsklopfen 03 ~ 05
100 Sprachverarbeitungsklopfen (2020): 40
100 Sprachverarbeitungsklopfen (2020): 32
100 Sprachverarbeitungsklopfen (2020): 35
100 Sprachverarbeitungsklopfen (2020): 47
100 Sprachverarbeitungsklopfen (2020): 39
100 Sprachverarbeitungsklopfen (2020): 22
100 Sprachverarbeitungsklopfen (2020): 42
100 Sprachverarbeitungsklopfen (2020): 29
100 Sprachverarbeitungsklopfen (2020): 49
100 Sprachverarbeitungsklopfen (2020): 45
100 Sprachverarbeitungsklopfen (2020): 10-19
100 Sprachverarbeitungsklopfen (2020): 30
100 Sprachverarbeitungsklopfen (2020): 00-09
100 Sprachverarbeitungsklopfen (2020): 31
100 Sprachverarbeitungsklopfen (2020): 48
100 Sprachverarbeitungsklopfen (2020): 44
100 Sprachverarbeitungsklopfen (2020): 41
100 Sprachverarbeitungsklopfen (2020): 37
100 Sprachverarbeitungsklopfen (2020): 25
100 Sprachverarbeitungsklopfen (2020): 23
100 Sprachverarbeitungsklopfen (2020): 33
100 Sprachverarbeitungsklopfen (2020): 20
100 Sprachverarbeitungsklopfen (2020): 27
100 Sprachverarbeitungsklopfen (2020): 46
100 Sprachverarbeitungsklopfen (2020): 21
100 Sprachverarbeitungsklopfen (2020): 36
100 Amateur-Sprachverarbeitungsklopfen: 41
100 Amateur-Sprachverarbeitungsklopfen: 71
100 Amateur-Sprachverarbeitungsklopfen: 56
100 Amateur-Sprachverarbeitungsklopfen: 24
100 Amateur-Sprachverarbeitungsklopfen: 59
100 Amateur-Sprachverarbeitungsklopfen: 70
100 Amateur-Sprachverarbeitungsklopfen: 60
100 Amateur-Sprachverarbeitungsklopfen: 92
100 Amateur-Sprachverarbeitungsklopfen: 30
100 Amateur-Sprachverarbeitungsklopfen: 06
100 Amateur-Sprachverarbeitungsklopfen: 84
100 Amateur-Sprachverarbeitungsklopfen: 81
100 Amateur-Sprachverarbeitungsklopfen: 33
100 Amateur-Sprachverarbeitungsklopfen: 40
100 Amateur-Sprachverarbeitungsklopfen: 45
100 Amateur-Sprachverarbeitungsklopfen: 43
100 Amateur-Sprachverarbeitungsklopfen: 55
100 Amateur-Sprachverarbeitungsklopfen: 22
100 Amateur-Sprachverarbeitungsklopfen: 61
100 Amateur-Sprachverarbeitungsklopfen: 94
100 Amateur-Sprachverarbeitungsklopfen: 54
100 Amateur-Sprachverarbeitungsklopfen: 04
100 Amateur-Sprachverarbeitungsklopfen: 63
100 Amateur-Sprachverarbeitungsklopfen: 12
100 Amateur-Sprachverarbeitungsklopfen: 14
100 Amateur-Sprachverarbeitungsklopfen: 08
100 Amateur-Sprachverarbeitungsklopfen: 42
100 Sprachverarbeitungsklopfen ~ Kapitel 1
100 Amateur-Sprachverarbeitungsklopfen: 19
100 Amateur-Sprachverarbeitungsklopfen: 73
100 Amateur-Sprachverarbeitungsklopfen: 75
100 Amateur-Sprachverarbeitungsklopfen: 98