Einführung in die Grundlagen von Python-Listen

PythonPythonBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Dieser Abschnitt stellt Listen, den primären Datentyp in Python zur Aufnahme einer geordneten Sammlung von Werten, vor.

Erstellen einer Liste

Verwenden Sie eckige Klammern, um einen Listenliteralen zu definieren:

names = [ 'Elwood', 'Jake', 'Curtis' ]
nums = [ 39, 38, 42, 65, 111]

Manchmal werden Listen mit anderen Methoden erstellt. Beispielsweise kann eine Zeichenfolge mithilfe der split()-Methode in eine Liste unterteilt werden:

>>> line = 'GOOG,100,490.10'
>>> row = line.split(',')
>>> row
['GOOG', '100', '490.10']
>>>

Listenoperationen

Listen können Elemente beliebigen Typs enthalten. Fügen Sie ein neues Element hinzu, indem Sie append() verwenden:

names.append('Murphy')    ## Fügt am Ende hinzu
names.insert(2, 'Aretha') ## Fügt in die Mitte ein

Verwenden Sie +, um Listen zu konkatenieren:

s = [1, 2, 3]
t = ['a', 'b']
s + t           ## [1, 2, 3, 'a', 'b']

Listen werden durch ganzzahlige Indizes indiziert. Beginnend bei 0.

names = [ 'Elwood', 'Jake', 'Curtis' ]

names[0]  ## 'Elwood'
names[1]  ## 'Jake'
names[2]  ## 'Curtis'

Negative Indizes zählen von der Endposition aus.

names[-1] ## 'Curtis'

Sie können jedes Element in einer Liste ändern.

names[1] = 'Joliet Jake'
names                     ## [ 'Elwood', 'Joliet Jake', 'Curtis' ]

Länge der Liste.

names = ['Elwood','Jake','Curtis']
len(names)  ## 3

Mitgliedschaftstest (in, not in).

'Elwood' in names       ## True
'Britney' not in names  ## True

Replikation (s * n).

s = [1, 2, 3]
s * 3   ## [1, 2, 3, 1, 2, 3, 1, 2, 3]

Listeniteration und -suche

Verwenden Sie for, um über die Inhalte der Liste zu iterieren.

for name in names:
    ## Verwenden Sie name
    ## z.B. print(name)
  ...

Dies ähnelt einem foreach-Statement in anderen Programmiersprachen.

Um die Position eines Elements schnell zu finden, verwenden Sie index().

names = ['Elwood','Jake','Curtis']
names.index('Curtis')   ## 2

Wenn das Element mehrmals vorhanden ist, gibt index() den Index des ersten Vorkommens zurück.

Wenn das Element nicht gefunden wird, wird eine ValueError-Ausnahme ausgelöst.

Entfernen von Elementen aus Listen

Sie können Elemente entweder nach Elementwert oder nach Index entfernen:

## Mit dem Wert
names.remove('Curtis')

## Mit dem Index
del names[1]

Beim Entfernen eines Elements wird kein Loch erzeugt. Andere Elemente werden nach unten verschoben, um den freigelegten Platz zu füllen. Wenn das Element mehrfach vorkommt, entfernt remove() nur das erste Vorkommen.

Sortieren von Listen

Listen können "in-place" sortiert werden.

s = [10, 1, 7, 3]
s.sort()                    ## [1, 3, 7, 10]

## Umgekehrte Reihenfolge
s = [10, 1, 7, 3]
s.sort(reverse=True)        ## [10, 7, 3, 1]

## Es funktioniert mit beliebig geordneten Daten
s = ['foo', 'bar','spam']
s.sort()                    ## ['bar', 'foo','spam']

Verwenden Sie sorted(), wenn Sie stattdessen eine neue Liste erstellen möchten:

t = sorted(s)               ## s bleibt unverändert, t enthält die sortierten Werte

Listen und Mathematik

Vorsicht: Listen wurden nicht für mathematische Operationen entwickelt.

>>> nums = [1, 2, 3, 4, 5]
>>> nums * 2
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
>>> nums + [10, 11, 12, 13, 14]
[1, 2, 3, 4, 5, 10, 11, 12, 13, 14]

Insbesondere stellen Listen keine Vektoren/Matrizen wie in MATLAB, Octave, R usw. dar. Es gibt jedoch einige Pakete, die Ihnen dabei helfen (z.B. numpy).

In diesem Übungsaufgaben verwenden wir den Listen-Datentyp in Python. Im letzten Abschnitt haben Sie mit Zeichenketten gearbeitet, die Aktiensymbole enthielten.

>>> symbols = 'HPQ,AAPL,IBM,MSFT,YHOO,DOA,GOOG'

Teilen Sie es in eine Liste von Namen auf, indem Sie die split()-Operation von Zeichenketten verwenden:

>>> symlist = symbols.split(',')

Übung 1.19: Extrahieren und Neuzuweisen von Listelementen

Versuchen Sie einige Zugriffe:

>>> symlist[0]
'HPQ'
>>> symlist[1]
'AAPL'
>>> symlist[-1]
'GOOG'
>>> symlist[-2]
'DOA'
>>>

Versuchen Sie, einen Wert neu zuzuweisen:

>>> symlist[2] = 'AIG'
>>> symlist
['HPQ', 'AAPL', 'AIG', 'MSFT', 'YHOO', 'DOA', 'GOOG']
>>>

Nehmen Sie einige Slices:

>>> symlist[0:3]
['HPQ', 'AAPL', 'AIG']
>>> symlist[-2:]
['DOA', 'GOOG']
>>>

Erstellen Sie eine leere Liste und fügen Sie einem Element hinzu.

>>> mysyms = []
>>> mysyms.append('GOOG')
>>> mysyms
['GOOG']

Sie können einen Teil einer Liste an eine andere Liste neu zuweisen. Beispielsweise:

>>> symlist[-2:] = mysyms
>>> symlist
['HPQ', 'AAPL', 'AIG', 'MSFT', 'YHOO', 'GOOG']
>>>

Wenn Sie dies tun, wird die Liste auf der linken Seite (symlist) entsprechend vergrößert oder verkleinert, um die rechte Seite (mysyms) zu passen. Beispielsweise wurden in obigem Beispiel die letzten beiden Elemente von symlist durch das einzelne Element in der Liste mysyms ersetzt.

Übung 1.20: Schleifen über Listenelemente

Die for-Schleife arbeitet, indem sie über Daten in einer Sequenz wie einer Liste iteriert. Testen Sie dies, indem Sie die folgende Schleife eingeben und beobachten, was passiert:

>>> for s in symlist:
        print('s =', s)
## Schauen Sie sich die Ausgabe an

Übung 1.21: Mitgliedschaftstests

Verwenden Sie den in- oder not in-Operator, um zu überprüfen, ob 'AIG', 'AA' und 'CAT' in der Liste der Symbole enthalten sind.

>>> ## Ist 'AIG' in der `symlist`?
True
>>> ## Ist 'AA' in der `symlist`?
False
>>> ## Ist 'CAT' NICHT in der `symlist`?
True
>>>
✨ Lösung prüfen und üben

Übung 1.22: Anhängen, Einfügen und Löschen von Elementen

Verwenden Sie die append()-Methode, um das Symbol 'RHT' ans Ende von symlist hinzuzufügen.

>>> symlist.append('RHT') ## Anhängen von 'RHT'
>>> symlist
['HPQ', 'AAPL', 'AIG', 'MSFT', 'YHOO', 'GOOG', 'RHT']
>>>

Verwenden Sie die insert()-Methode, um das Symbol 'AA' als zweites Element in der Liste einzufügen.

>>> symlist.insert(1, 'AA') ## Einfügen von 'AA' als zweites Element in der Liste
>>> symlist
['HPQ', 'AA', 'AAPL', 'AIG', 'MSFT', 'YHOO', 'GOOG', 'RHT']
>>>

Verwenden Sie die remove()-Methode, um 'MSFT' aus der Liste zu entfernen.

>>> symlist.remove('MSFT') ## Entfernen von 'MSFT'
>>> symlist
['HPQ', 'AA', 'AAPL', 'AIG', 'YHOO', 'GOOG', 'RHT']
>>>

Fügen Sie am Ende der Liste einen doppelten Eintrag für 'YHOO' hinzu.

Hinweis: Es ist völlig in Ordnung, wenn eine Liste doppelte Werte enthält.

>>> symlist.append('YHOO') ## Anhängen von 'YHOO'
>>> symlist
['HPQ', 'AA', 'AAPL', 'AIG', 'YHOO', 'GOOG', 'RHT', 'YHOO']
>>>

Verwenden Sie die index()-Methode, um die erste Position von 'YHOO' in der Liste zu finden.

>>> symlist.index('YHOO') ## Finden des ersten Index von 'YHOO'
4
>>> symlist[4]
'YHOO'
>>>

Zählen Sie, wie oft 'YHOO' in der Liste vorkommt:

>>> symlist.count('YHOO')
2
>>>

Entfernen Sie das erste Vorkommen von 'YHOO'.

>>> symlist.remove('YHOO') ## Entfernen des ersten Vorkommens von 'YHOO'
>>> symlist
['HPQ', 'AA', 'AAPL', 'AIG', 'GOOG', 'RHT', 'YHOO']
>>>

Damit Sie wissen, es gibt keine Methode, um alle Vorkommen eines Elements zu finden oder zu entfernen. Wir werden jedoch im Abschnitt 2 einen eleganten Weg dafür sehen.

Übung 1.23: Sortieren

Möchten Sie eine Liste sortieren? Verwenden Sie die sort()-Methode. Testen Sie es:

>>> symlist.sort()
>>> symlist
['AA', 'AAPL', 'AIG', 'GOOG', 'HPQ', 'RHT', 'YHOO']
>>>

Möchten Sie in umgekehrter Reihenfolge sortieren? Probieren Sie dies:

>>> symlist.sort(reverse=True)
>>> symlist
['YHOO', 'RHT', 'HPQ', 'GOOG', 'AIG', 'AAPL', 'AA']
>>>

Hinweis: Beim Sortieren einer Liste werden deren Inhalte "in-place" geändert. Das heißt, die Elemente der Liste werden durcheinander gebracht, aber es wird keine neue Liste erstellt.

Übung 1.24: Alles wieder zusammenbringen

Möchten Sie eine Liste von Zeichenketten zu einer einzigen Zeichenkette zusammenfügen? Verwenden Sie die join()-Methode von Zeichenketten wie folgt (Hinweis: Dies sieht zunächst komisch aus).

>>> a = ','.join(symlist)
>>> a
'YHOO,RHT,HPQ,GOOG,AIG,AAPL,AA'
>>> b = ':'.join(symlist)
>>> b
'YHOO:RHT:HPQ:GOOG:AIG:AAPL:AA'
>>> c = ''.join(symlist)
>>> c
'YHOORHTHPQGOOGAIGAAPLAA'
>>>

Übung 1.25: Listen von beliebigen Objekten

Listen können beliebige Arten von Objekten enthalten, einschließlich anderer Listen (z.B. geschachtelte Listen). Testen Sie dies:

>>> nums = [101, 102, 103]
>>> items = ['spam', symlist, nums]
>>> items
['spam', ['YHOO', 'RHT', 'HPQ', 'GOOG', 'AIG', 'AAPL', 'AA'], [101, 102, 103]]

Achten Sie genau auf die obige Ausgabe. items ist eine Liste mit drei Elementen. Das erste Element ist eine Zeichenkette, aber die anderen beiden Elemente sind Listen.

Sie können auf Elemente in den geschachtelten Listen über mehrere Indexoperationen zugreifen.

>>> items[0]
'spam'
>>> items[0][0]
's'
>>> items[1]
['YHOO', 'RHT', 'HPQ', 'GOOG', 'AIG', 'AAPL', 'AA']
>>> items[1][1]
'RHT'
>>> items[1][1][2]
'T'
>>> items[2]
[101, 102, 103]
>>> items[2][1]
102
>>>

Auch wenn es technisch möglich ist, sehr komplizierte Listenstrukturen zu erstellen, sollten Sie als allgemeine Regel die Dinge einfach halten. Normalerweise halten Listen Elemente, die alle vom gleichen Wertetyp sind. Beispielsweise eine Liste, die ausschließlich aus Zahlen besteht, oder eine Liste von Textzeichenketten. Das Mischen unterschiedlicher Datentypen in derselben Liste ist oft ein guter Weg, um sich den Kopf zu verbluten, daher ist es am besten zu vermeiden.

Zusammenfassung

Herzlichen Glückwunsch! Sie haben das Listen-Labor abgeschlossen. Sie können in LabEx weitere Labs ausprobieren, um Ihre Fähigkeiten zu verbessern.