Integriertes Python-Objekt

Überblick

Studiennotizen für First Python 3rd Edition

Agenda

Eingebautes Objekt

Vorteile der Verwendung von integrierten Objekten

Eingebauter Objekttyp

Objekttyp Wörtliches Beispiel
Numerischer Wert 1234
3.1425
999L
3+4j
String 'spam'
"guido7s"
aufführen [1, [2, 'three'], 4]
Wörterbuch {'food': 'spam', 'taste': 'yum'}
Taple (1, 'spam', 4, 'U')
Datei myfile = open('eggs', 'r')
Andere set
type
None
bool

Numerischer Wert

Mathematische Arithmetik

Verwenden Sie das Symbol "+" für die Addition, das Symbol "*" für die Multiplikation und das Symbol "**" für die Potenz.

#Addition von ganzen Zahlen
>>> 123 + 222
345

#Gleitkommazahlmultiplikation
>>> 1.5 * 4
6.0

#2 zur 100. Potenz
#Python konvertiert automatisch in "lange Ganzzahlen", wenn es genauer sein muss.
>>> 2 ** 100
1267650600228229401496703205376L

Die folgenden Unterschiede bestehen zwischen den beiden integrierten Funktionen repr und str

#repr: Zeigt das Berechnungsergebnis so an, wie es ist(Ausgabe mit maximaler Genauigkeit)
>>> 3.1415 * 2
6.2830000000000004

#str: In leicht lesbares Format konvertieren und anzeigen(Anzeige in einer Form, die für Menschen leicht zu sehen ist)
>>> print 3.1415 * 2
6.283

Mathematikmodul

>>> import math
>>> math.pi
3.1415926535897931
>>> math.sqrt(85)
9.2195444572928871

zufälliges Modul

>>> import random
>>> random.random()
0.59268735266273953
>>> random.choice([1, 2, 3, 4])
1

String

Reihenfolge

Sequenzen manipulieren

>>> S = 'Spam'

#Überprüfen Sie die Länge
>>> len(S)
4

#Wenn der Index "0" angegeben ist, kann das erste Element extrahiert werden.
>>> S[0]
'S'

#Extrahieren Sie das zweite Element von links
>>> S[1]
'p'

#Element ganz rechts von S.
>>> S[-1]
'm'

#Das zweite Element vom rechten Ende von S.
>>> S[-2]
'a'

#Das letzte Element von S.
>>> S[-1]
'm'

#Gleiche Bedeutung, aber schwieriger
>>> S[len(S)-1]
'm'

#Extrahieren Sie 1 und 2 Elemente (3 ist nicht enthalten) durch Schneiden
>>> S[1:3]
'pa'

#Extrahieren Sie alle Elemente nach Index 1 (1):len(S)Gleich wie)
>>> S[1:]
'pam'

#Es gibt keine Änderung in S selbst nach der obigen Verarbeitung
>>> S
'Spam'

#Extrahieren Sie alle Elemente außer dem Ende
>>> S[0:3]
'Spa'

# S[0:3]Gleich wie
>>> S[:3]
'Spa'

#Dies ist auch das gleiche (0:-Sie können 1 schreiben, aber das ist einfacher)
>>> S[:-1]
'Spa'

#Extrahiere alle Elemente von S (0:len(S)Gleich wie)
>>> S[:]
'Spam'

#Verknüpfen
>>> S + 'xyz'
'Spamxyz'

#Original S ändert sich nicht
>>> S
'Spam'

#Wiederholung
>>> S * 8
'SpamSpamSpamSpamSpamSpamSpamSpam'

Unveränderlich

>>> S
'Spam'

#Objekte mit Unveränderlichkeit können nicht überschrieben werden
>>> S[0] = 'z'
...Fehlermeldung weggelassen...
TypeError: 'str' object does not support item assignment

#Erstellen Sie eine neue Zeichenfolge und weisen Sie sie der ursprünglichen Variablen zu
>>> S = 'z' + S[1:]
>>> S
'zpam'

String-spezifische Methoden

#Suchen Sie die angegebene Zeichenfolge
>>> S.find('pa')
1

>>> S
'Spam'

#Ersetzen Sie die angegebene Zeichenfolge
>>> S.replace('pa', 'XYZ')
'SXYZm'

>>> S
'Spam'

>>> line = 'aaa,bbb,ccccc,dd'

#Teilen Sie durch ein Trennzeichen, um eine Liste zu erstellen
>>> line.split(',')
['aaa', 'bbb', 'ccccc', 'dd']

>>> S = 'spam'

#Fallkonvertierung
>>> S.upper()
'SPAM'

#Bestätigung des Inhalts (Isalpha, Isdigit usw.)
>>> S.isalpha()
True

>>> line = 'aaa,bbb,ccccc,dd\n'

#Entfernen Sie das Leerzeichen am rechten Ende
>>> line = line.rstrip()
>>> line
'aaa,bbb,ccccc,dd'

Variationen darüber, wie man Strings macht

Fluchtabfolge

# \n ist das Ende der Zeile,\t ist eine Registerkarte
>>> S = 'A\nB\tC'

#Beide werden als ein Zeichen behandelt
>>> len(S)
5

# \n entspricht dem ASCII-Code 10
>>> ord('\n')
10

# \0 steht für NULL. Nicht das Ende der Zeichenfolge
>>> S = 'A\0B\0C'
>>> len(S)
5

Einfache, doppelte und dreifache Zitate

>>> msg = """
aaaaaaaaaaaaa
bbb'''bbbbbbbbbb""bbbbbbb'bbbb
cccccccccccccc"""
>>> msg
'\naaaaaaaaaaaaa\nbbb\'\'\'bbbbbbbbbb""bbbbbbb\'bbbb\ncccccccccccccc'

Mustervergleich

--Verwenden Sie ein Modul namens re

>>> import re
>>> match = re.match('Hello[ \t]*(.*)world', 'Hello Python world')
>>> match.group(1)
'Python '

>>> match = re.match('/(.*)/(.*)/(.*)', '/usr/home/lumberjack')
>>> match.groups()
('usr', 'home', 'lumberjack')

aufführen

Funktionen auflisten

Sequenzbetrieb

#Eine Liste mit drei Elementen. Alle Typen sind unterschiedlich
>>> L = [123, 'spam', 1.23]

#Anzahl der Elemente in der Liste
>>> len(L)
3

#Indizierung
>>> L[0]
123

#Schneiden (was zu einer neuen Liste führt)
>>> L[:-1]
[123, 'spam']

#Eine neue Liste wird auch bei Verkettung erstellt
>>> L + [4, 5, 6]
[123, 'spam', 1.23, 4, 5, 6]

#Die ursprüngliche Liste hat sich nicht geändert
>>> L
[123, 'spam', 1.23]

Listenspezifische Methoden

--append: Element am Ende hinzufügen --pop: Lösche das Element in der Mitte --insert: Element an der angegebenen Position einfügen --remove: Entfernen Sie das angegebene Element --sort: Listenelemente in aufsteigender Reihenfolge sortieren (überschreiben) -- reverse: Elemente umkehren (überschreiben)

#Fügen Sie am Ende ein Element hinzu, um die Liste zu verlängern
>>> L.append('NI')
>>> L
[123, 'spam', 1.23, 'NI']

#Kürzen Sie die Liste, indem Sie Elemente in der Mitte entfernen
>>> L.pop(2)
1.23

# “del L[2]"Aber Sie können das Element löschen
>>> L
[123, 'spam', 'NI']

>>> M = ['bb', 'aa', 'cc']
>>> M.sort()
>>> M
['aa', 'bb', 'cc']

>>> M.reverse()
>>> M
['cc', 'bb', 'aa']

Element Existenzprüfung

Auf ein Element verweisen, das tatsächlich nicht vorhanden ist

>>> L
[123, 'spam', 'NI']

>>> L[99]
...Fehlermeldung weggelassen...
IndexError: list index out of range

>>> L[99] = 1
...Fehlermeldung weggelassen...
IndexError: list assignment index out of range

Nest

Nest Anwendungsbeispiel

--Matrix

#Eine 3x3-Matrix, die durch Verschachtelungslisten erstellt wurde
>>> M = [[1, 2, 3], 
         [4, 5, 6],
         [7, 8, 9]]
>>> M
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

#Zugangsleitung 2
>>> M[1]
[4, 5, 6]

#Holen Sie sich nach dem Zugriff auf Zeile 2 das dritte Element dieser Zeile
>>> M[1][2]
6

Listeneinschlussnotation

#Extrahieren Sie die Elemente in der zweiten Spalte
>>> col2 = [row[1] for row in M]
>>> col2
[2, 5, 8]

#Die ursprüngliche Matrix bleibt unverändert
>>> M
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

#Fügen Sie jedem Element in Spalte 2 1 hinzu
>>> [row[1] + 1 for row in M]
[3, 6, 9]

#Entfernen Sie ungerade Elemente
>>> [row[1] for row in M if row[1] % 2 == 0]
[2, 8]

#Diagonale Elemente extrahieren
>>> diag = [M[i][i] for i in [0, 1, 2]]
>>> diag
[1, 5, 9]

#Wiederholen Sie die Zeichen in der Zeichenfolge
>>> doubles = [c * 2 for c in 'spam']
>>> doubles
['ss', 'pp', 'aa', 'mm']

Wörterbuch

Kartierung

--Dictionary gehört zur Kategorie der Zuordnung, nicht "Sequenz"

Manipulieren des Mappings

>>> D = {'food': 'Spam', 'quantity': 4, 'color': 'pink'}

#Schlüssel'food'Angeben
>>> D['food']
'Spam'

# 'quantity'Addiere 1 zu dem entsprechenden Wert
>>> D['quantity'] += 1
>>> D
{'food': 'Spam', 'color': 'pink', 'quantity': 5}

>>> D = {}

#Weisen Sie einen Wert zu, indem Sie einen Schlüssel angeben, der nicht vorhanden ist
>>> D['name'] = 'Bob'
>>> D['job'] = 'dev'
>>> D['age'] = 40
>>> D
{'age': 40, 'job': 'dev', 'name': 'Bob'}
>>> print D['name']
Bob

Nest

>>> rec = {'name': {'first': 'Bob', 'last': 'Smith'},
           'job': ['dev', 'mgr'],
           'age': 40.5}

# 'Name'Unterstützt verschachtelte Wörterbücher
>>> rec['name']
{'last': 'Smith', 'first': 'Bob'}

#Geben Sie den Schlüssel des verschachtelten Wörterbuchs an
>>> rec['name']['last']
'Smith'

# 'job'Entspricht einer verschachtelten Liste
>>> rec['job']
['dev', 'mgr']

#Geben Sie den Index für die verschachtelte Liste an
>>> rec['job'][-1]
'mgr'

# 'job'Erweitern und überschreiben Sie die entsprechende Liste
>>> rec['job'].append('janitor')
>>> rec
{'age': 40.5,'job': ['dev', 'mgr', 'janitor'], 'name': {'last': 'Smith', 'first':'Bob'}}

Schlüsselsortierung: für Schleife

#Holen Sie sich eine Liste der Schlüssel (in keiner bestimmten Reihenfolge)
>>> Ks = D.keys()
>>> Ks
['a', 'c', 'b']

#Sortieren Sie die Liste der Schlüssel
>>> Ks.sort()
>>> Ks
['a', 'b', 'c']

#Geben Sie die Schlüssel in der Liste und die entsprechenden Werte der Reihe nach aus
>>> for key in Ks:
print key, '=>', D[key]
a => 1
b => 2
c => 3

Der obige Prozess kann geschrieben werden als

>>> D
{'a': 1, 'c': 3, 'b': 2}
>>> for key in sorted(D):
print key, '=>', D[key]
a => 1
b => 2
c => 3

For-Schleife, die die Zeichen in der Zeichenfolge in der Reihenfolge in Großbuchstaben konvertiert und ausgibt

>>> for c in 'spam':
print c.upper()
S
P
A
M

Iterative Verarbeitung und Optimierung

――Die folgenden zwei Codes sind äquivalent, aber die Notation zur Aufnahme von Listen ist im Allgemeinen etwa doppelt so schnell.

Listeneinschlussnotation


>>> squares = [x ** 2 for x in [1, 2, 3, 4, 5]]
>>> squares
[1, 4, 9, 16, 25]

für Schleife


>>> squares = []
>>> for x in [1, 2, 3, 4, 5]:
squares.append(x ** 2)
>>> squares
[1, 4, 9, 16, 25]

Nicht vorhandener Schlüssel: wenn Test

Beim Versuch, mit einem nicht vorhandenen Schlüssel auf einen Wert zuzugreifen, tritt ein Fehler auf

>>> D
{'a': 1, 'c': 3, 'b': 2}

#Das Wörterbuch wird durch Angabe eines neuen Schlüssels erweitert
>>> D['e'] = 99
>>> D
{'a': 1, 'c': 3, 'b': 2, 'e': 99}

#Fehler beim Versuch, mit einem nicht vorhandenen Schlüssel auf einen Wert zuzugreifen
>>> D['f']
...Fehlermeldung weggelassen...
KeyError: 'f'

Stellen Sie sicher, dass der Schlüssel im Voraus vorhanden ist

--Überprüfen Sie, ob der Schlüssel mit der Methode has_key vorhanden ist

>>> D.has_key('f')
False
>>> if not D.has_key('f'):
print 'missing'
missing

Taple

Einmal erstellt, kann es nicht mehr geändert werden

>>> T = (1, 2, 3, 4) #Taple mit 4 Elementen
>>> len(T) #Länge
4
>>> T + (5, 6) #Verknüpfen
(1, 2, 3, 4, 5, 6)
>>> T[0] #Indizieren, Schneiden usw.
1
Der vielleicht größte Unterschied zur Liste der Taples besteht darin, dass sie nach ihrer Erstellung nicht mehr geändert werden können.
>>> T[0] = 2 #Taple ist unveränderlich
...Fehlermeldung weggelassen...
TypeError: 'tuple' object does not support item assignment

Taple

Taple


#Taple mit 4 Elementen
>>> T = (1, 2, 3, 4)

#Länge
>>> len(T)
4

#Verknüpfen
>>> T + (5, 6)
(1, 2, 3, 4, 5, 6)

#Indizieren, Schneiden usw.
>>> T[0]
1

#Der größte Unterschied zur Liste der Taples besteht darin, dass sie nach ihrer Erstellung nicht mehr geändert werden können.
>>> T[0] = 2
...Fehlermeldung weggelassen...
TypeError: 'tuple' object does not support item assignment

Warum brauchst du Tupel?

Datei

Grundbetrieb

Schreiben


#Erstellen Sie eine neue Datei im Ausgabemodus
>>> f = open('data.txt', 'w')

#Schreiben Sie eine Zeichenfolge
>>> f.write('Hello\n')

>>> f.write('world\n')

#Schließen Sie die Datei und leeren Sie den Ausgabepuffer auf die Festplatte
>>> f.close()

Lesen


# 'r'Ist der Standardverarbeitungsmodus
>>> f = open('data.txt')

#Lesen Sie die gesamte Datei
>>> bytes = f.read()
>>> bytes
'Hello\nworld\n'

#print interpretiert die Bedeutung von Steuerzeichen
>>> print bytes
Hello
world

#Der Inhalt der Datei wird immer als Zeichenfolge behandelt
>>> bytes.split()
['Hello', 'world']

Dateibezogene Tools

Unterstützte Tools

--Rohr

Andere Arten

Aggregiertes Objekt

--Verwenden Sie eine integrierte Funktion namens "set"

>>> X = set('spam')

#Erstellen Sie zwei Sätze basierend auf der Reihenfolge
>>> Y = set(['h', 'a', 'm'])
>>> X, Y
(set(['a', 'p', 's', 'm']), set(['a', 'h', 'm']))

#Kreuzung
>>> X & Y
set(['a', 'm'])

#Beitreten
>>> X | Y
set(['a', 'p', 's', 'h', 'm'])

#Unterschied
>>> X - Y
set(['p', 's'])

Feste Präzisionsbrüche und Boolesche Typen

#Feste Präzisionsfraktion
>>> import decimal
>>> d = decimal.Decimal('3.141')
>>> d + 1
Decimal("4.141")

#Boolescher Typ
>>> 1 > 2, 1 < 2
(False, True)
>>> bool('spam')
True

# None
>>> X = None
>>> print X
None

#Erstellen Sie eine Liste mit 100 Keine
>>> L = [None] * 100
>>> L
[None, None, None, None, None, None, None, None, None, None, None, None, None,...Liste von 100 Keine...]

# Types
>>> type(L)
<type 'list'>

#Der Typ selbst ist auch ein Objekt
>>> type(type(L))
<type 'type'>

Typprüfung

#Typprüfung
>>> if type(L) == type([]):
print 'yes'
yes

#Überprüfen Sie den Namen des Typs
>>> if type(L) == list:
print 'yes'
yes

#"Objektorientierte" Bestätigungsmethode
>>> if isinstance(L, list):
print 'yes'
yes

Vom Benutzer erstellte Klasse

Definition der Arbeiterklasse


class Worker:
  #Initialisieren
  def __init__(self, name, pay):
    #Selbst entspricht einem neuen Objekt
    self.name = name
    self.pay = pay
  def lastName(self):
    #Zeichenkette mit Leerzeichen teilen
    return self.name.split()[-1]
  def giveRaise(self, percent):
    #Gehalt überschreiben
    self.pay *= (1.0 + percent)
#Erstellen Sie zwei Instanzen
>>> bob = Worker('Bob Smith', 50000)

#Beide haben Namen und Bezahlung
>>> sue = Worker('Sue Jones', 60000)

#Methodenaufruf. Bob wird selbst
>>> bob.lastName()
'Smith'

#Klage ist Selbst
>>> sue.lastName()
'Jones'

#Die Bezahlung der Klage wurde geändert
>>> sue.giveRaise(.10)
>>> sue.pay
66000.0

Zusammenfassung

Was sind einige der in Python integrierten Objekte?

--Numerischer Wert --Ganze Zahl

Mit eingebauten Objekten

Was ist Unveränderlichkeit?

Was ist eine Sequenz?

Was ist ein Mapping?

Was ist Polymorphismus?

Recommended Posts

Integriertes Python-Objekt
Integriertes Python-Objekt
Eingebaute Python
Objektorientiert in Python
In Python integrierte Funktion ~ Zip ~
Über Python3 ... (Ellipsenobjekt)
Integrierte Funktionen von Wrap Python
Python
String-Objektmethoden in Python
[Python] Wert des Funktionsobjekts (?)
Nullobjektvergleich in Python
Verschiedene String-Operationen in Python integriert
Python-Variablen und Objekt-IDs
Prolog-Objektorientierung für Python-Programmierer
[Ubuntu] [Python] Objektverfolgung mit dlib
Berühren Sie Python-Objekte in Elixir
Python Dict Object Memorandum (mysteriöses Dokument)
Python-Grundlagen ⑤
Python-Zusammenfassung
Python-Einschlussnotation
Python-Technik
Python studieren
Erstellen Sie eine Umgebung für das in Blender integrierte Python
Python 2.7 Countdown
Python-Memorandum
Python FlowFishMaster
Python-Dienst
[Python] Attributfehler: 'Listen'-Objekt hat keinen Attributplatz'
Python-Tipps
Python-Funktion ①
Python-Grundlagen
Python-Memo
Erobern Sie 69 integrierte Funktionen von Python 6th p ~ r
Ufo-> Python (3)
Python-Einschlussnotation
Installieren Sie Python
Python Singleton
Python-Grundlagen ④
Python-Memorandum 2
Python-Memo
Python Jinja2
Python-Inkrement
atCoder 173 Python
[Python] -Funktion
Python-Installation
Python installieren 3.4.3.
Versuchen Sie Python
Python-Memo
Python iterativ
Python-Algorithmus
Python2 + word2vec
[Python] -Variablen
Python-Funktionen
Python sys.intern ()
Python-Tutorial
Python-Fraktion
Python Underbar Das ist was
Python-Zusammenfassung