Latest web development tutorials

Python3 Datenstruktur

In diesem Kapitel wird vor allem mit dem Wissen, kombiniert wir früher gelernt Python-Datenstrukturen einzuführen.


Liste

Python-Liste ist variabel, das ist das wichtigste Merkmal aus Streichern und Tupeln unterscheidet, nämlich einen Satz: Die Liste kann geändert werden, während die Streicher und Tupeln nicht.

Hier ist eine Liste von Python:

Weg Beschreibung
list.append (x) So fügen Sie ein Element am Ende der Liste, das entspricht einer [len (a):] = [x].
list.extend (L) Durch das Hinzufügen alle Elemente der angegebenen Liste die Liste zu erweitern, das Äquivalent eines [len (a):] = L.
list.insert (i, x) Legen Sie ein Element an der angegebenen Stelle. Der erste Parameter wird in seinen Index vor den Elementen, wie a.insert (0, x) eingeführt werden, bevor die gesamte Liste eingefügt werden, aber a.insert (len (a), x) entspricht a.append ( x).
list.remove (x) Entfernt das erste Element der Liste, dessen Wert x. Wenn es kein solches Element ist, wird es einen Fehler zurück.
list.pop ([i]) Entfernen Sie Elemente aus der angegebenen Position in dieser Liste, und gibt es zurück. Wenn Sie den Index nicht, a.pop () gibt das letzte Element angeben. Element wurde sofort aus der Liste entfernt. (Die Methode von eckigen Klammern um den i zeigt an, dass der Parameter optional ist, nicht, dass Sie in eckigen Klammern geben sollte, werden Sie oft diese Notation sehen in Python Library Reference.)
list.clear () Entfernen Sie alle Elemente in der Liste, gleich del a [:].
list.index (x) Gibt den Index der Liste mit einem Wert von x in dem ersten Element. Wenn kein passendes Element einen Fehler zurück.
list.count (x) Gibt die Anzahl der x in der Liste erscheint.
List.Sort () Der Elemente in der Liste sortiert werden.
list.reverse () Inverted Elemente in der Liste.
list.copy () Gibt eine flache Kopie der Liste zu einem gleich [:].

Das folgende Beispiel zeigt die meisten der Methodenliste:

>>> a = [66.25, 333, 333, 1, 1234.5]
>>> print(a.count(333), a.count(66.25), a.count('x'))
2 1 0
>>> a.insert(2, -1)
>>> a.append(333)
>>> a
[66.25, 333, -1, 333, 1, 1234.5, 333]
>>> a.index(333)
1
>>> a.remove(333)
>>> a
[66.25, -1, 333, 1, 1234.5, 333]
>>> a.reverse()
>>> a
[333, 1234.5, 1, 333, -1, 66.25]
>>> a.sort()
>>> a
[-1, 1, 66.25, 333, 333, 1234.5]

Hinweis: Ähnlich einzufügen, zu entfernen oder die Liste Methode Art ändern, usw. ohne Rückgabewert.


Verwenden Sie die Liste als Stapel

Herstellungsverfahren für eine Liste von Listen machen kann leicht als ein Stapel verwendet werden, wobei der Stapel als eine spezifische Datenstruktur, die erste das letzte Element einzugeben freigegeben (LIFO) werden. Verwenden Sie append () -Methode kann ein Element an die Spitze des Stapels hinzuzufügen. Ohne einen expliziten Index der pop () -Methode kann ein Element aus der oben auf dem Stapel abzurufen. Zum Beispiel:

>>> stack = [3, 4, 5]
>>> stack.append(6)
>>> stack.append(7)
>>> stack
[3, 4, 5, 6, 7]
>>> stack.pop()
7
>>> stack
[3, 4, 5, 6]
>>> stack.pop()
6
>>> stack.pop()
5
>>> stack
[3, 4]

Verwenden Sie die Liste als eine Warteschlange

Die Liste kann auch als Warteschlange verwendet werden, die Warteschlange die erste ist, die Elemente, die erste herausgenommen zu verbinden, aber nehmen Sie diese Liste als der Zweck nicht effizient ist. Fügen Sie am Ende der Liste oder Pop-up-Elemente der Geschwindigkeit, jedoch einfügen oder aus dem Kopfgeschwindigkeit ausstoßen nicht schnell (weil alle anderen Elemente haben einen nach dem anderen zu bewegen) in der Liste.

>>> from collections import deque
>>> queue = deque(["Eric", "John", "Michael"])
>>> queue.append("Terry")           # Terry arrives
>>> queue.append("Graham")          # Graham arrives
>>> queue.popleft()                 # The first to arrive now leaves
'Eric'
>>> queue.popleft()                 # The second to arrive now leaves
'John'
>>> queue                           # Remaining queue in order of arrival
deque(['Michael', 'Terry', 'Graham'])

Listenkomprehension

Liste Comprehensions eine knappe Weise Listen aus der Sequenz zu erstellen. Einige Anwendungen werden im Allgemeinen auf jedes Element einer Sequenz von Operationen angewendet werden, mit dem Ergebnis, das erhalten wird, als die Elemente eine neue Liste zu erzeugen, oder Sequenzen gemäß Bestimmungsbedingungen bestimmt erstellen.

Jede Liste Verständnis sind nach für mit einem Ausdruck, dann null oder mehr für oder wenn Klauseln. Das Ergebnis ist eine Liste von dem nachfolgenden Kontext erzeugt für und wenn nach dem Ausdruck. Wenn Sie die Formel eines Tupels wollen, müssen Sie Klammern verwenden.

Hier werden wir jede Zahl von drei, die Liste eine neue Liste zu erhalten:

>>> vec = [2, 4, 6]
>>> [3*x for x in vec]
[6, 12, 18]

Jetzt spielen wir kleine Tricks:

>>> [[x, x**2] for x in vec]
[[2, 4], [4, 16], [6, 36]]

Hier wir ein Verfahren einzeln für jedes Element in einer Folge aufzurufen:

>>> freshfruit = ['  banana', '  loganberry ', 'passion fruit  ']
>>> [weapon.strip() for weapon in freshfruit]
['banana', 'loganberry', 'passion fruit']

Wir können die if-Klausel als Filter verwenden:

>>> [3*x for x in vec if x > 3]
[12, 18]
>>> [3*x for x in vec if x < 2]
[]

Hier sind einige Demos auf Radfahren und andere Fähigkeiten:

>>> vec1 = [2, 4, 6]
>>> vec2 = [4, 3, -9]
>>> [x*y for x in vec1 for y in vec2]
[8, 6, -18, 16, 12, -36, 24, 18, -54]
>>> [x+y for x in vec1 for y in vec2]
[6, 5, -7, 8, 7, -5, 10, 9, -3]
>>> [vec1[i]*vec2[i] for i in range(len(vec1))]
[8, 12, -54]

Listenkomprehension können komplexe Ausdrücke oder verschachtelte Funktionen nutzen:

>>> [str(round(355/113, i)) for i in range(1, 6)]
['3.1', '3.14', '3.142', '3.1416', '3.14159']

Verschachtelte Liste Verständnis

Python-Listen können auch verschachtelt werden.

Das folgende Beispiel zeigt die 3X4-Matrix-Liste:

>>> matrix = [
...     [1, 2, 3, 4],
...     [5, 6, 7, 8],
...     [9, 10, 11, 12],
... ]

Das folgende Beispiel listet 3X4 Matrix 4X3 Konvertierungsliste:

>>> [[row[i] for row in matrix] for i in range(4)]
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

Die folgenden Beispiele können auch die folgenden Methoden verwenden:

>>> transposed = []
>>> for i in range(4):
...     transposed.append([row[i] for row in matrix])
...
>>> transposed
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

Eine andere Methode:

>>> transposed = []
>>> for i in range(4):
...     # the following 3 lines implement the nested listcomp
...     transposed_row = []
...     for row in matrix:
...         transposed_row.append(row[i])
...     transposed.append(transposed_row)
...
>>> transposed
[[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

del-Anweisung

Sie können die Anweisung del durch den Index anstelle von Wert verwenden, um ein Element aus einer Liste zu entfernen. Dies ist die Verwendung von Pop () einen anderen Wert zurückgibt. Sie können die del-Anweisung einen Ausschnitt aus der Liste zu entfernen, oder die gesamte Liste löschen (unsere bisherigen Methode der Darstellung einen Schnitt an der leeren Liste zugeordnet ist). Zum Beispiel:

>>> a = [-1, 1, 66.25, 333, 333, 1234.5]
>>> del a[0]
>>> a
[1, 66.25, 333, 333, 1234.5]
>>> del a[2:4]
>>> a
[1, 66.25, 1234.5]
>>> del a[:]
>>> a
[]

Sie können auch die Instanzvariable mit del löschen:

>>> del a

Tupel und Sequenzen

Tuple Anzahl von kommagetrennten Werten besteht, zum Beispiel:

>>> t = 12345, 54321, 'hello!'
>>> t[0]
12345
>>> t
(12345, 54321, 'hello!')
>>> # Tuples may be nested:
... u = t, (1, 2, 3, 4, 5)
>>> u
((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))

Wie Sie sehen, sind Tupel auf Ausgang alway in Klammern, um richtig die verschachtelte Struktur auszudrücken. Es dürfen keine Klammern oder bei der Eingabe, aber die Klammern sind in der Regel erforderlich (wenn das Tupel Teil eines größeren Ausdrucks ist).


Set

Eine Sammlung ist eine ungeordnete Sammlung von einzigartigen Elementen. Grundfunktionen umfassen Prüfung und Beseitigung doppelter Elemente.

Sie können eine Reihe von Klammern erstellen ({}). Hinweis: Wenn Sie eine leere Menge erstellen möchten, müssen Sie den Satz verwenden () anstelle von {}; was ein leeres Wörterbuch erstellt, wird der nächste Abschnitt wir diese Datenstruktur einzuführen.

Im Folgenden ist eine einfache Demonstration:

>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket)                      # 删除重复的
{'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket                 # 检测成员
True
>>> 'crabgrass' in basket
False

>>> # 以下演示了两个集合的操作
...
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a                                  # a 中唯一的字母
{'a', 'r', 'b', 'c', 'd'}
>>> a - b                              # 在 a 中的字母,但不在 b 中
{'r', 'd', 'b'}
>>> a | b                              # 在 a 或 b 中的字母
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b                              # 在 a 和 b 中都有的字母
{'a', 'c'}
>>> a ^ b                              # 在 a 或 b 中的字母,但不同时在 a 和 b 中
{'r', 'd', 'b', 'm', 'z', 'l'}

Sammlung unterstützen auch die Ableitung der Formel:

>>> a = {x for x in 'abracadabra' if x not in 'abc'}
>>> a
{'r', 'd'}

Wörterbuch

Eine weitere nützliche Datentyp in Python gebaut ist das Wörterbuch.

Eine kontinuierliche Folge von Integer-Index, und dieser Unterschied ist, Keyword-Lexikon indiziert Schlüsselwörter kann jeder unveränderlichen Typ sein, in der Regel mit einem String oder numerisch.

Der beste Weg, um es als ein Wörterbuch zu verstehen sind ungeordnete Schlüssel => Wert-Paaren. Im gleichen Wörterbuch, müssen die Tasten voneinander verschieden sein.

Ein Paar von Klammern erzeugt ein leeres Wörterbuch: {}.

Dies ist ein einfaches Beispiel für die Verwendung eines Wörterbuchs:

>>> tel = {'jack': 4098, 'sape': 4139}
>>> tel['guido'] = 4127
>>> tel
{'sape': 4139, 'guido': 4127, 'jack': 4098}
>>> tel['jack']
4098
>>> del tel['sape']
>>> tel['irv'] = 4127
>>> tel
{'guido': 4127, 'irv': 4127, 'jack': 4098}
>>> list(tel.keys())
['irv', 'guido', 'jack']
>>> sorted(tel.keys())
['guido', 'irv', 'jack']
>>> 'guido' in tel
True
>>> 'jack' not in tel
False

Constructor dict (), um das Wörterbuch direkt aus dem Schlüssel-Tupel-Liste zu erstellen. Wenn Sie ein festes Muster haben, geben Sie Listenkomprehensionen einen bestimmten Schlüssel-Wert-Paare:

>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
{'sape': 4139, 'jack': 4098, 'guido': 4127}

Darüber hinaus kann das Wörterbuch verwendet werden, um einen Ausdruck zu erstellen jedes Wörterbuch von Schlüssel und Werte ableiten:

>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}

Wenn das Schlüsselwort ist einfach eine Reihe von Schlüssel-Wert-Paare mit Keyword-Argumente manchmal bequemer zu spezifizieren:

>>> dict(sape=4139, guido=4127, jack=4098)
{'sape': 4139, 'jack': 4098, 'guido': 4127}

Traversal Techniken

Wenn in den Wörterbüchern durchqueren, kann der Schlüssel und entsprechende Wert die Elemente () Methode für die gleichzeitige Interpretation verwenden aus:

>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}
>>> for k, v in knights.items():
...     print(k, v)
...
gallahad the pure
robin the brave

Wenn in der Folge durchlaufen, kann der Positionsindex und entsprechende Wert enumerate () verwendet werden Funktion auch erhalten:

>>> for i, v in enumerate(['tic', 'tac', 'toe']):
...     print(i, v)
...
0 tic
1 tac
2 toe

Während dem Verfahren zwei oder mehrere Sequenzen, können Sie die zip () in Kombination verwendet werden:

>>> questions = ['name', 'quest', 'favorite color']
>>> answers = ['lancelot', 'the holy grail', 'blue']
>>> for q, a in zip(questions, answers):
...     print('What is your {0}?  It is {1}.'.format(q, a))
...
What is your name?  It is lancelot.
What is your quest?  It is the holy grail.
What is your favorite color?  It is blue.

Um eine umgekehrter Reihenfolge durchlaufen, zunächst die Reihenfolge festlegen, und rufen Sie dann reversesd () Funktion:

>>> for i in reversed(range(1, 10, 2)):
...     print(i)
...
9
7
5
3
1

Durchlaufen einer Sequenz nach der Reihenfolge, gibt die Verwendung von sortierten () Funktion eine sortierte Sequenz, ändert nicht den ursprünglichen Wert:

>>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
>>> for f in sorted(set(basket)):
...     print(f)
...
apple
banana
orange
pear

Lesen Sie die Dokumentation