[Python] Mit Scheiben umkehren! !! (Es gibt auch einen Kommentar zu Scheiben!)

Ein Memorandum, weil es für mich eine neue Entdeckung in Bezug auf das Schneiden war. Grundsätzlich sagen die Leute: arrow_double_down: [80% überspringen](#% E3% 81% 8A% E5% BE% 85% E3% 81% A1% E3% 81% 8B% E3% 81% AD% E3% 82 % B9% E3% 83% A9% E3% 82% A4% E3% 82% B9% E3% 81% A7% E3% 83% AA% E3% 83% 90% E3% 83% BC% E3% 82% B9 ): arrow_double_down:

Die Grundlagen des Schneidens! !!

Ich denke, dass Sie auch Elemente schneiden und extrahieren können, wenn Sie Elemente aus Listen und Zeichenfolgen extrahieren. Scheibe? was ist das? Schmeckt es? Lassen Sie uns erklären, wie man es für diejenigen verwendet, die sagen.

Nachtrag (27.05.2019)

In Erwartung des Endes der Unterstützung für Python2 wurde die Notation geändert, um mit Python3 übereinzustimmen.

Vorbereitung

Es ist keine Scheibe: heat_smile:

#Ein Bereichsobjekt ist in Ordnung, aber ich wage es, es zur Erklärung in ein Listenobjekt umzuwandeln.
a = list(range(0,10)) 
a[2] #2

Normal schneiden

#i-th bis j-Extrahieren Sie das erste Element
#(Jedoch 0<= i <Erfülle die Beziehung von j
#Auch [i<Wenn 0 i= len(a) + i】【j <Wenn 0 j= len(a) +j])
a[i:j] #[a[i], a[i+1], a[i+2], ..., a[j-1]]
#2. bis 7 ..(8-1)Extrahieren Sie das zweite Element
a[2:8] #[2, 3, 4, 5, 6, 7]
#Wenn ich weggelassen werde, vom Startpunkt
a[:6] #[0, 1, 2, 3, 4, 5]
#Wenn j weggelassen wird, bis zum Ende des Elements
a[7:] #[7, 8, 9]

Von hinten schneiden

Wenn es sich um eine negative Zahl handelt, wird sie von hinten gezählt.

# [-1]Nehmen Sie das letzte Element mit heraus
#das ist[len(a)-1]Ich denke, es ist gleichbedeutend mit (nicht die Quelle lesen)
a[-1] #9
# -Ab dem 8 ..-6(-5-1)Extrahieren Sie das zweite Element
a[-8:-5] #[2, 3, 4](verwendenicht)
#Vom Ausgangspunkt-6(-5-1)Extrahieren Sie das zweite Element
a[:-6] #[0, 1, 2, 3](Fastniebenutzt)
# -Extrahieren Sie Elemente vom 8. bis zum Endpunkt
a[-2:] #[8, 9](WirdhäufigzumHerausnehmenvonErweiterungenverwendet.)

Da sich die Regel "Extrahieren des j-1-Elements aus dem i-ten" nicht ändert, ist auch das folgende Beispiel möglich.

#Ab dem zweiten-6(-5-1)Extrahieren Sie das zweite Element
a[2:-5] #[2, 3, 4]
# -8. bis 5 ..(6-1)Extrahieren Sie das zweite Element
a[-8:6] #[2, 3, 4, 5]

Python Web ist die am einfachsten zu verstehende Erklärung für das Konzept des Schneidens.

Machen Sie einen Schritt und schneiden Sie! !!

Einführung in die Verwendung von Slices als Voraussetzung! Ist es überraschend für diejenigen, die es nicht wissen? Ich wusste es nicht von hier.

Step Slice (willkürlich benannt)

Genau genommen, einschließlich dieses Schritts, liegt es innerhalb der Slice-Spezifikationen in Python. Genau genommen ist es also seltsam, es als Step Slice zu bezeichnen. Bitte verzeihen Sie mir jedoch, wenn es leicht zu verstehen ist. .. ..

#i-th bis j-Extrahieren Sie das erste Element alle k
#(Die Konstante c ist jedoch 0<= c < (j-i)/Maximale Ganzzahl, die k) erfüllt
a[i:j:k] #[a[i+0*k], a[i+1*k], a[i+2*k], ..., a[i+c*k]]
#Extrahieren Sie alle 3 Elemente aus dem Ganzen
a[::3] #[0, 3, 6, 9]
#Nehmen Sie beim Ausschneiden alle zwei Elemente heraus
a[2:8:2] #[2, 4, 6]

Wenn der Schrittwert (a [:: k ← this guy]) eine positive ganze Zahl ist, basiert der Schritt auf dem ausgeschnittenen Element (denken Sie daran). Übrigens kann ** "0" für den Schrittwert ** </ font> (Spezifikation) nicht angegeben werden.

Natürlich ist das schrittweise Schneiden auch möglich, indem der Start- und der Endpunkt weggelassen werden.

#5 vom Ausgangspunkt(6-1)Extrahieren Sie alle zwei Sekunden Elemente
a[:6:2] #[0, 2, 4]
#Extrahieren Sie alle zwei Elemente vom 7. bis zum Endpunkt
a[7::2] #[7, 9]

Schrittscheibe von hinten

Wenn der Schrittwert auf eine negative Zahl eingestellt ist, wird er schrittweise in ** umgekehrter Reihenfolge (← wichtig) ** ausgeführt.

#Von hinten mit einer negativen Zahl
a[::-3] #[9, 6, 3, 0]

Wenn Sie möchten, dass der Schrittwert eine negative Ganzzahl ist, ist es meiner Meinung nach grundsätzlich besser, ihn nur auf diese Weise zu verwenden (der Grund wird später beschrieben).

Anwendung von Step Slice

* Dieser Abschnitt hat nichts mit der Hauptzeile zu tun, sodass Sie ihn überspringen können. </ font>

Beim Schneiden mit dem auf eine negative Ganzzahl eingestellten Schrittwert: Aber es ist schwierig. Daher möchten Sie es möglicherweise nicht für Codeüberprüfungen verwenden oder weil es schwierig ist zu verstehen, was Sie tun, wenn Sie später darauf zurückblicken.

#Elemente vom 7. bis zum Startpunkt-Alle zwei herausnehmen
a[7::-2] # [7, 5, 3, 1]
#Das 5. Element vom Endpunkt-Alle zwei herausnehmen
a[:4:-2] # [9, 7, 5]
#Das 8. bis 3. Element-Alle zwei herausnehmen
a[8:2:-2] # [8, 6, 4]
# -Ab dem zweiten-Bis zu 7 Elemente-Alle 3 herausnehmen
a[-2:-8:-3] # [8, 5]

Tatsächlich ist es nur in diesem Fall (wenn der Schrittwert eine negative ganze Zahl ist) konzeptionell "extrahiere das ** j + 1 ** -te Element aus dem i-ten Element jedes k". (Wenn der Wert von i oder j in allen Slices weggelassen wird, gelten die obigen Regeln nicht.) Beachten Sie auch, dass die Beziehung im Gegensatz zu anderen Fällen ** i> j ** ist.

Denken Sie daran, dass ** in umgekehrter Reihenfolge **, die ich zuvor als wichtig erwähnt habe. Wenn k <0 ist, scheint es gut zu denken, dass die Größenbeziehung auch für i und j umgekehrt ist. (Wenn Sie das Positive und Negative jedes Teils in der Mathematik umkehren, ist es möglicherweise nahe am Bild, dass die Größenbeziehung umgekehrt wird.)

Warten Sie mal! Mit Scheiben umkehren! !!

Vorerst. Es spielt keine Rolle, aber wenn Sie sich hier ansehen und Python verwenden, können Sie leicht Sätze erstellen, die Sie von der gegenüberliegenden Seite lesen können 3 Treten Sie mit dem Gefühl ein, Minuten zu kochen. (**! Die Geschichte von Augi Hum Amirep Zekamashi x Tanako ** ohne Anker)

konata = 'Konata x Shimakaze Premium Figurenanker!'
print(''.join(reversed(konata)))
#!! Sumashi Ankerentfernung Augi Hum Amirep Zekamashi x Tanako

Leider gefällt mir diese Methode nicht, da sie einmal ein Objekt im Teil "umgekehrt (konata)" erstellt. Sei schlauer! !! Ich habe nach verschiedenen Dingen gesucht! !! Vertrauter Stapelüberlauf Best way to create a “reversed” list in Python?

Diejenigen, die von oben gelesen haben, haben es bereits bemerkt. Es wird wie folgt sein.

print(konata[::-1])
#Metamorphose-Notation: Drucken(konata[-1:0 - len(konata):-1])
#!! Sumashi Ankerentfernung Augi Hum Amirep Zekamashi x Tanako

Very very very very SMART!! Ich bin zu aufgeregt Wie Sie dem obigen Link entnehmen können, scheint es außerdem schnell zu sein. (Ich habe nicht verifiziert) Auch in dieser Hinsicht ist es ** SMART **.

Zusammenfassung

** Wenn Sie es in umgekehrter Reihenfolge tun, machen Sie es [Liste oder Zeichenkette] [:: -1]! !! ** ** **

[Bonus] Slice-Theorem (?)

Wenn für "[Liste oder Zeichenfolge] [i: j: k]" der Schrittwert k nicht angegeben ist, wird er als k = 1 definiert (gemäß den Spezifikationen). Auch [i = len ([Liste oder Zeichenkette]) + i, wenn i <0] [j = len ([Liste oder Zeichenkette]) + j, wenn j <0]. Zu diesem Zeitpunkt gilt Folgendes.

  1. Wenn k> 0 ist, "extrahiert von i-t bis j das erste Element jedes k (i <j)"
  2. Wenn k <0 ist, "extrahiere alle k Elemente vom i-ten zum j + 1. Element (i> j)"

Es wird jedoch nicht festgestellt, wenn der Wert von i oder j weggelassen wird.

Referenz

Kapitel 4 Eingebauter Typ - 4.6.1 Allgemeine Sequenzoperation

Recommended Posts