Zusammenfassung der Python-Indizes und -Slices

Einführung

Ich weiß nicht, welche Zahl ich brauen soll, aber es ist wichtig, sie selbst zu erleben und in eigenen Worten zu schreiben.

Index (speziell für Strings)

Wenn Sie eine Zeichenfolge normal definieren, kann sie wie ein eindimensionales Array behandelt werden, in dem jedes Zeichen gespeichert ist.

python


letters="ABCDEFG"

#Was ist der dritte (ab 0)?
letters[3]  # 'D'

Sie können auch Minus verwenden, um von hinten zu zählen. Wenn es in normaler Reihenfolge ist, zählt es von 0, aber wenn es von hinten ist, ist es am Ende -1. Nicht -0. Natürlich?

python


#Was ist der zweite von hinten?
letters[-2]  # 'F'

Es ist auch möglich, Zeichenfolgen Zeichen für Zeichen als eindimensionales Array zu extrahieren.

Quelle


for letter in letters:
  print (letter)

Ergebnis


A
B
C
D
E
F
G

Es ist nicht der Zweck dieser Zeit, aber es ist bequem, sich an die Aufzählungsfunktion zu erinnern. Sie können den Index und das Element gleichzeitig abrufen. Es ist nicht schwierig, das gleiche Ergebnis zu erzielen, ohne dies zu verwenden. Es ist eine Frage der Lesbarkeit. Oder sie erwägen eine Portierung in andere Sprachen, die diese Funktion nicht haben. Ich stimme der Meinung voll und ganz zu, dass es unangenehm ist, Werte für mehrere Variablen gleichzeitig zu erhalten, aber Sie sollten sich daran gewöhnen.

Quelle mit der Aufzählungsfunktion


for i,letter in enumerate(letters):
  print (i,letter)

Quelle, die die Aufzählungsfunktion nicht verwendet


for i in range(len(letters)):
  print (i,letters[i])

Das Ergebnis ist das gleiche


0 A
1 B
2 C
3 D
4 E
5 F
6 G

Die Showa-duftende Petit Con hat auch eine versteckte Indexspezifikation für Zeichenketten, die im Handbuch nicht angegeben ist (es gibt keine Aufzählungsfunktion). Das folgende Bild ist zusammengesetzt, und 3DS Petitcon Nr. 3 kann nicht auf dem unteren Bildschirm ausgeführt werden, während die Liste auf dem oberen Bildschirm angezeigt wird. Es kümmert mich nicht.

petitcom3.png

Möglicherweise liegt es an der Spezifikation, dass eine Zeichenfolge auch als eindimensionales Array verwendet werden kann, wodurch es so einfach ist zu überprüfen, ob eine bestimmte Zeichenfolge eine bestimmte Zeichenfolge enthält.

Quelle


if "CD" in "ABCDEFG":  #Ich habe es sichtbar gemacht, weil es schwierig ist zu verstehen, was ich mit Variablen mache
  print ("Wird mit inbegriffen sein")
else:
  print ("Nicht enthalten")

Ergebnis


Wird mit inbegriffen sein

Scheibe

Slice ist ein Trick, der einen Teil der Sequenz herausnehmen kann. Ausgedrückt als [Start: Ende: Schritt]. Wenn Start weggelassen wird, ist es von Anfang an, wenn Ende weggelassen wird, ist es bis zum Ende, und wenn Schritt weggelassen wird, ist Schritt = 1. Wie der Index zählt er ab 0 und enthält nicht den für end angegebenen Wert.

In einen String / eindimensionales Array schneiden

Basic

python


#Zur leichteren Bestätigung neu definiert
letters="ABCDEFG"

#Geben Sie Start und Ende an und lassen Sie den Schritt weg
letters[3:5]  # 'DE'

Es erscheint unpraktisch, dass der durch end angegebene Index nicht tatsächlich enthalten ist, aber er hat auch einen Vorteil.

python


#Zur leichteren Bestätigung neu definiert
letters="ABCDEFG"

#Geben Sie nur end = sogenannte linke Funktion an
letters[:4]  # 'ABCD'

#Geben Sie nur start = von der angegebenen Position bis zum Ende an
letters[4:]  # 'EFG'

Auf diese Weise können Sie das Array teilen, indem Sie einen Index angeben.

Geben Sie Minus an

Gewöhnen wir uns an die negative Behandlung.

python


#Zur leichteren Bestätigung neu definiert
letters="ABCDEFG"

#3. Zeichen von hinten (angegeben durch Index anstelle von Slice, bereits erwähnt)
print(letters[-3])  # 'E'

#Geben Sie nur start = sogenannte rechte Funktion vom "dritten Zeichen von hinten" bis zum Ende an
print(letters[-3:])  # 'EFG'

#Geben Sie nur end = von Anfang bis "drittes Zeichen von hinten" an.
print(letters[:-3])  # 'ABCD'

#Es wird seltener verwendet, aber natürlich können beide negativ sein. Achten Sie auf das Größenverhältnis.
print(letters[-5:-3])  # 'CD'

mittlere Funktion / linke Funktion / rechte Funktion

Sie können auch Ihre eigene Mittelfunktion mithilfe von Slices erstellen. Es ist möglicherweise nicht erforderlich, eine Funktion daraus zu machen, aber wir erstellen auch eine linke und eine rechte Funktion. Der Grund, warum 0 als Standardwert für die Länge angegeben wird, ist die Ausgabe "von der angegebenen Position bis zum Ende", wenn die Länge weggelassen wird. -1 dient zum Zählen des ersten Zeichens als erstes Zeichen anstelle des 0. Zeichens. In Excel war das Verhalten übrigens zwischen der Arbeitsblattfunktion MID und der VBA Mid-Funktion unterschiedlich.

python


def left(text, length):
  return text[:length]

def right(text, length):
  return text[-length:]

def mid(text, pos, length=0):
  if not length:
    length=len(text)
  return text[pos-1:pos+length-1]

Schritt angeben

Wenn Schritt angegeben ist, wird es so. Holen Sie es sich zuerst normal in Schritt 2.

python


#Zur leichteren Bestätigung neu definiert
letters="ABCDEFG"

letters[1:5:2]  # 'BD'

#Dies ist ein solcher Mechanismus.
# ABCDEFG
# 0123456
#  ◯ ◯ ×
#2. Argument=Da es 5 ist, ist das 5. Zeichen nicht enthalten

Wenn Sie für Schritt ein Minus angeben, wird in die entgegengesetzte Richtung verfahren. Da es in die entgegengesetzte Richtung geht, muss das Ende kleiner und der Anfang größer sein.

python


letters[5:1:-2]  # 'FD'

Ich dachte, dass der Schritt negativ ist, ist keine so unregelmäßige Verwendung, aber ** Start und Ende sind alle angegeben und der Schritt ist auf -1 gesetzt, dh wenn :: -1 gesetzt ist, sind alle Elemente in umgekehrter Reihenfolge ** Es ist gut, sich an diese Bewegung zu erinnern, da sie häufig verwendet wird. Für das, was es verwendet, hat das von imread von OpenCV gelesene Bild die in BGR gespeicherte Farbe, kann jedoch bei der Konvertierung in RGB verwendet werden. OpenCV hat auch eine Farbkonvertierungsfunktion, aber diese ist intelligenter.

Quelle


print (letters)
print (letters[::-1])

Ergebnis


ABCDEFG
GFEDCBA

Zweidimensionales Array

Ich wollte wirklich von hier aus reden. Erstellen Sie zunächst ein zweidimensionales Array. Ich stieß plötzlich auf die Geschichte von ** letztes Mal **.

Quelle


#versprechen
import numpy as np

#Höhe und Breite
H,W = 5,6

#Erstellen Sie zunächst ein leeres Array mit nur der definierten Größe
arr=np.full((H,W),"",dtype=object)

#Definieren Sie Werte wie Excel-Zellennamen
letters="ABCDEFG"
for c in range(W):
  for r in range(H):
    arr[r,c]=letters[c]+str(r)

print (arr)

Ergebnis


[['A0' 'B0' 'C0' 'D0' 'E0' 'F0']
 ['A1' 'B1' 'C1' 'D1' 'E1' 'F1']
 ['A2' 'B2' 'C2' 'D2' 'E2' 'F2']
 ['A3' 'B3' 'C3' 'D3' 'E3' 'F3']
 ['A4' 'B4' 'C4' 'D4' 'E4' 'F4']]

Wenn Sie es normalerweise nach Index angeben, sieht es so aus. Ich schreibe es oft, aber die Zählung beginnt bei 0.

python


r,c=2,1
arr[r,c]  # 'B2'

Wenn Sie Slices für Zeilen und Spalten angeben, sieht dies folgendermaßen aus. Da die Grundvoraussetzung [Start: Ende] ist, können Sie [r1: r2, c1: c2] als Koordinatentick verwenden. Es ist jedoch besser, sich daran zu erinnern, indem Sie ** [r: r + h, c: c + w] ** schreiben. Überlegen.

Quelle


r,c = 2,1  #Zeile und Spalte starten
h,w = 3,4  #Bereich Höhe und Breite
print(arr[r:r+h, c:c+w])

Ergebnis


[['B2' 'C2' 'D2' 'E2']
 ['B3' 'C3' 'D3' 'E3']
 ['B4' 'C4' 'D4' 'E4']]

Das Array mit der angegebenen Anzahl von Zeilen und Spalten wurde erfolgreich abgerufen.

Index- und Slice-Matching-Technik oder etwas zu beachten

** Indizierung gibt ein Element zurück **, ** Slices geben jedoch einen Teil des Arrays zurück **. Auch wenn es 1 Zeile und 1 Spalte ist.

Quelle


r,c = 2,1  #Zeile und Spalte starten
h,w = 1,1  #Bereich Höhe und Breite
print ("Index",arr[r, c])
print ("Scheibe",arr[r:r+h, c:c+w])

python


Index B2
Scheibe[['B2']]

Das scheint jedoch keine Saite zu sein.

Quelle


#Zur leichteren Bestätigung neu definiert
letters="ABCDEFG"

print ("Index",letters[3])
print ("Scheibe",letters[3:3+1])

Ergebnis


Index D.
Geschnitten

Wenn Sie eine der zweidimensionalen Array-Matrizen als Index und die andere als Slice angeben, erhalten Sie ein eindimensionales Array. Es ist ein eindimensionales Array oder nur eine Aufzählung oder Liste.

Quelle


r=3
print (arr[r,:])  #Alle Spalten sind angegeben

c=4
print (arr[:,c])  #Alle Zeilen sind angegeben

Ergebnis


['A3' 'B3' 'C3' 'D3' 'E3' 'F3']
['E0' 'E1' 'E2' 'E3' 'E4']

Ich habe das Ergebnis des Aufschneidens von 1 Zeile 1 Spalte oben geschrieben, aber ich möchte Ihnen ein praktischeres Beispiel geben. Wenn eine Zeile des zweidimensionalen Arrays durch Schneiden angegeben wird und die Spalte ebenfalls geschnitten wird, ist dies wie folgt. Die Halterung ist verdoppelt. Es ist ein zweidimensionales Array mit 1 Zeile und w Spalten.

Quelle


r=3
print (arr[r:r+1,:])

Ergebnis


[['A3' 'B3' 'C3' 'D3' 'E3' 'F3']]

Wenn Sie die Zeile als Slice und eine Spalte als Slice angeben, wird sie zu einem zweidimensionalen Array mit h Zeilen und 1 Spalte.

Quelle


c=4
print (arr[:,c:c+1])

Ergebnis


[['E0']
 ['E1']
 ['E2']
 ['E3']
 ['E4']]

Verwenden Sie Slice-Schritte in einem zweidimensionalen Array

Es wird nur ein Beispiel für das Umdrehen mit :: -1 anstelle der normalen Schrittverwendung angezeigt.

Quelle


print("Ursprüngliche Form")
print(arr)
print("Erstes Argument = Zeile umkehren")
print(arr[::-1])
print("Zweites Argument = Spalte umkehren Das erste Argument ist alle angegeben.::Aber okay:Aber es ist gut")
print(arr[::, ::-1])
print("Invertieren Sie sowohl Zeilen als auch Spalten")
print(arr[::-1, ::-1])

Ergebnis


Ursprüngliche Form
[['A0' 'B0' 'C0' 'D0' 'E0' 'F0']
 ['A1' 'B1' 'C1' 'D1' 'E1' 'F1']
 ['A2' 'B2' 'C2' 'D2' 'E2' 'F2']
 ['A3' 'B3' 'C3' 'D3' 'E3' 'F3']
 ['A4' 'B4' 'C4' 'D4' 'E4' 'F4']]
Erstes Argument = Zeile umkehren
[['A4' 'B4' 'C4' 'D4' 'E4' 'F4']
 ['A3' 'B3' 'C3' 'D3' 'E3' 'F3']
 ['A2' 'B2' 'C2' 'D2' 'E2' 'F2']
 ['A1' 'B1' 'C1' 'D1' 'E1' 'F1']
 ['A0' 'B0' 'C0' 'D0' 'E0' 'F0']]
Zweites Argument = Spalte umkehren Das erste Argument ist alle angegeben.::Aber okay:Aber es ist gut
[['F0' 'E0' 'D0' 'C0' 'B0' 'A0']
 ['F1' 'E1' 'D1' 'C1' 'B1' 'A1']
 ['F2' 'E2' 'D2' 'C2' 'B2' 'A2']
 ['F3' 'E3' 'D3' 'C3' 'B3' 'A3']
 ['F4' 'E4' 'D4' 'C4' 'B4' 'A4']]
Invertieren Sie sowohl Zeilen als auch Spalten
[['F4' 'E4' 'D4' 'C4' 'B4' 'A4']
 ['F3' 'E3' 'D3' 'C3' 'B3' 'A3']
 ['F2' 'E2' 'D2' 'C2' 'B2' 'A2']
 ['F1' 'E1' 'D1' 'C1' 'B1' 'A1']
 ['F0' 'E0' 'D0' 'C0' 'B0' 'A0']]

Ich kann mich nicht an so etwas erinnern, wenn ich es nicht selbst versuche.

Vorschau beim nächsten Mal

Ich wollte von hier aus das OpenCV-Image eingeben, war aber erschöpft. Nächstes Mal werde ich über Bilder sprechen.

Recommended Posts

Zusammenfassung der Python-Indizes und -Slices
Zusammenfassung der Python-Argumente
Zusammenfassung der Korrespondenz zwischen Ruby- und Python-Array-Operationen
Zusammenfassung der Unterschiede zwischen PHP und Python
Installation von Python 3 und Flask [Zusammenfassung der Umgebungskonstruktion]
E / A-bezogene Zusammenfassung von Python und Fortan
Zusammenfassung der Python-Dateivorgänge
Zusammenfassung der Python3-Listenoperationen
Quellinstallation und Installation von Python
Python - Erläuterung und Zusammenfassung der Verwendung der 24 wichtigsten Pakete
[Python] Typfehler: Zusammenfassung der Ursachen und Abhilfemaßnahmen für 'Kein Typ'
Zusammenfassung der Datumsverarbeitung in Python (Datum / Uhrzeit und Datum)
Umgebungskonstruktion von Python und OpenCV
Python-Zusammenfassung
Die Geschichte von Python und die Geschichte von NaN
Installation von SciPy und matplotlib (Python)
[Python] Zusammenfassung zum Abrufen von Listen und Wörterbuchelementen
Python-Zusammenfassung
Zusammenfassung der Unterstützung von Hash-Operationen (Dictionary) für Ruby und Python
Koexistenz von Python2 und 3 mit CircleCI (1.0)
Reputation von Python-Büchern und Nachschlagewerken
[OpenCV; Python] Zusammenfassung der Funktion findcontours
Zusammenfassung der Unterschiede zwischen Python und PHP (Vergleichstabelle der Hauptelemente)
Installation von Visual Studio Code und Installation von Python
[Python] Zusammenfassung der Verwendung von Pandas
Extraktion von tweet.js (json.loads und eval) (Python)
Zusammenfassung verschiedener for-Anweisungen in Python
Verbinde viel Python oder und und
[Python2.7] Zusammenfassung der Verwendung von unittest
Zusammenfassung der Module und Klassen in Python-TensorFlow2-
Zusammenfassung der integrierten Methoden usw. der Python-Liste
Zusammenfassung nützlicher Techniken von Scrapy in Python
Zusammenfassung der Verwendung der Python-Liste
Einfache Einführung in die Python3-Serie und OpenCV3
[Python] Verschiedene Kombinationen von Zeichenketten und Werten
[Python2.7] Zusammenfassung der Verwendung des Unterprozesses
Zusammenfassung der Achsenoptionsspezifikation von Python "numpy.sum (...)"
Gleiche Automatisierung des Python- und PyPI-Setups
Vollständiges Verständnis von Python-Threading und Multiprocessing
Projekt Euler # 1 "Vielfaches von 3 und 5" in Python
Über Python-Slices
Zusammenfassung des Python-Tutorials
[Python] Zusammenfassung der Konvertierung zwischen Zeichenfolgen und numerischen Werten (ASCII-Code)
Python-Grundlagen ①
Grundlagen von Python ①
Kopie von Python
Python-bezogene Zusammenfassung
Zusammenfassung der Python-Grundlagen
Einführung von Python
Zusammenfassung der 2016 erstellten OSS-Tools und -Bibliotheken
Zusammenfassung zum Importieren von Dateien in Python 3
Die Antwort von "1/2" unterscheidet sich zwischen Python2 und 3
Angeben des Bereichs von Ruby- und Python-Arrays
Zusammenfassung der Verwendung von MNIST mit Python
Vergleichen Sie die Geschwindigkeit von Python Append und Map
[Python] Kapitel 02-01 Grundlagen von Python-Programmen (Operationen und Variablen)
TRIE-Baumimplementierung mit Python und LOUDS
Links und Memos von Python-Zeichencodezeichenfolgen
[Python] Zusammenfassung der S3-Dateivorgänge mit boto3