So arbeiten Sie mit dem Datentyp der Python-Liste

Python enthält eine Sammlung integrierter Datentypen, die allgemeine Datenverarbeitungsvorgänge vereinfachen. Darunter befindet sich die  Liste , ein einfacher, aber vielseitiger Sammlungstyp. Mit einer Python-Liste können Sie Python-Objekte in einer eindimensionalen Zeile zusammenfassen, sodass auf Objekte nach Position zugegriffen, hinzugefügt, entfernt, sortiert und unterteilt werden kann.

Grundlagen der Python-Liste

Das Definieren einer Liste in Python ist einfach - verwenden Sie einfach die Klammernsyntax, um Elemente in einer Liste anzugeben.

list_of_ints = [1, 2, 3]

Elemente in einer Liste müssen auch nicht alle vom gleichen Typ sein. Sie können ein beliebiges Python-Objekt sein. (Hier wird angenommen, dass  Three es sich um eine Funktion handelt.)

list_of_objects = ["Eins", ZWEI, Drei, {"Vier": 4}, Keine]

Beachten Sie, dass gemischte Objekte in einer Liste Auswirkungen auf das Sortieren der Liste haben können. Wir werden später darauf eingehen.

Der Hauptgrund für die Verwendung einer Liste besteht darin, Objekte anhand ihrer Position in der Liste zu finden. Dazu verwenden Sie die Indexnotation von Python: eine Zahl in Klammern, die bei 0 beginnt und die Position des Elements in der Liste angibt.

Für das obige Beispiel list_of_ints[0]ergibt sich 1. list_of_ints[1]ergibt 2. list_of_objects[4]wäre das  None Objekt.

Indizierung der Python-Liste

Wenn Sie eine positive Ganzzahl für den Index verwenden, gibt die Ganzzahl die Position des zu suchenden Elements an. Wenn Sie jedoch eine  negative  Ganzzahl verwenden, gibt die Ganzzahl die Position an, die am Ende  der Liste beginnt  . Die Verwendung eines Index von -1ist beispielsweise eine praktische Möglichkeit, das letzte Element aus einer Liste abzurufen, unabhängig von der Größe der Liste.

list_of_ints[-1] ergibt  3list_of_objects[-1] ergibt  None.

Sie können auch eine Ganzzahlvariable als Index verwenden. Wenn  x=0list_of_ints[x] ergibt 1, und so weiter.

Hinzufügen und Entfernen von Python-Listenelementen

Python bietet verschiedene Möglichkeiten, um Elemente zu einer Liste hinzuzufügen oder daraus zu entfernen.

  • .append() Fügt ein Element am  Ende  der Liste ein. Zum Beispiel list_of_ints.append(4)würde list_of_ints in die Liste  verwandeln  [1,2,3,4]. Anhänge sind schnell und effizient; Das Anhängen eines Elements an eine Liste dauert ungefähr genauso lange, unabhängig davon, wie lang die Liste ist.
  • .pop() Entfernt das letzte Element und gibt es aus der Liste zurück. Wenn wir  x = list_of_ints.pop() das Original verwenden würden  list_of_ints, würde x den Wert enthalten  3. (Sie müssen die Ergebnisse jedoch nicht .pop() einem Wert zuweisen  , wenn Sie ihn nicht benötigen.)  .pop()Vorgänge sind ebenfalls schnell und effizient.
  • .insert() fügt ein Element an einer beliebigen Stelle in die Liste ein. Zum Beispiel  list_of_ints.insert(0,10) würde sich list_of_intsin verwandeln  [10,1,2,3]. Beachten Sie, dass dieser Vorgang umso langsamer ist, je näher Sie an der Vorderseite der Liste einfügen. Sie werden jedoch keine große Verlangsamung feststellen, es sei denn, Ihre Liste enthält viele tausend Elemente oder Sie fügen die Einfügungen in einer engen Schleife ein.
  • .pop(x) Entfernt das Element im Index  x. So  list_of_ints.pop(0) würde das Element am Index entfernen 0. Wieder Je näher Sie sich an der Vorderseite der Liste ist , desto langsamer kann dieser Vorgang sein.
  • .remove(item) Entfernt ein Element aus einer Liste, jedoch  nicht  basierend auf seinem Index. Entfernt vielmehr .remove()das  erste Vorkommen  des von Ihnen angegebenen Objekts und sucht von oben in der Liste nach unten. Denn  [3,7,7,9,8].remove(7)der erste  7 würde entfernt, was zur Liste führen würde  [3,7,9,8]. Auch dieser Vorgang kann für eine große Liste langsamer werden, da theoretisch die gesamte Liste durchlaufen werden muss, um zu funktionieren.

Schneiden einer Python-Liste

Listen können in neue Listen unterteilt werden, ein Vorgang, der als  Schneiden bezeichnet wird . Mit der Slice-Syntax von Python können Sie angeben, welcher Teil einer Liste abgeschnitten werden soll und wie der ausgeschnittene Teil bearbeitet werden soll.

Sie haben oben gesehen, wie Sie mit der Klammernotation ein einzelnes Element aus einer Liste abrufen können: my_list[2]Zum Beispiel. Slices verwenden eine Variante derselben Indexnotation (und folgen denselben Indexierungsregeln) : list_object[start:stop:step].

  • start ist die Position in der Liste, an der das Slice gestartet werden soll. 
  • stop ist die Position in der Liste, an der wir aufhören zu schneiden. Mit anderen Worten,  diese Position und alles danach  wird weggelassen.
  • step ist ein optionaler Indikator für jedes n-te Element für das Slice. Standardmäßig ist dies so  1, dass das Slice jedes Element aus der Liste beibehält, aus der es schneidet. Setzen Sie stepauf  2, und Sie werden jedes zweite Element auszuwählen, und so weiter.

Hier sind einige Beispiele. Betrachten Sie diese Liste:

Slice_list = [1,2,3,4,5,6,7,8,9,0]

Slice_list [0: 5] = [1, 2, 3, 4, 5]

(Beachten Sie, dass wir bei Index 4 anhalten, nicht bei Index 5!)

Slice_list [0: 5: 2] = [1, 3, 5]

Wenn Sie einen bestimmten Slice-Index weglassen, geht Python von einem Standard aus. Lassen Sie den Startindex weg und Python übernimmt den Anfang der Liste:

Slice_list [: 5] = [1, 2, 3, 4, 5]

Lassen Sie den Stoppindex weg und Python übernimmt das Ende der Liste:

Slice_list [4:] = [5, 6, 7, 8, 9, 0]

Das  step Element kann auch  negativ sein . Auf diese Weise können wir Scheiben nehmen, die umgekehrte Kopien des Originals sind:

Slice_list [:: - 1] = [0, 9, 8, 7, 6, 5, 4, 3, 2, 1]

Beachten Sie, dass Sie in umgekehrter Reihenfolge schneiden können, indem Sie Start- und Stoppindizes verwenden, die rückwärts und nicht vorwärts gehen:

Slice_list [5: 2: -1] = [6, 5, 4]

Beachten Sie auch, dass Listenabschnitte  Kopien  der ursprünglichen Liste sind. Die ursprüngliche Liste bleibt unverändert. 

[Ebenfalls am: Die besten kostenlosen Data Science-Kurse während der Quarantäne]

Eine Python-Liste sortieren

Python provides two ways to sort lists: You can generate a new, sorted list from the old one, or you can sort an existing list in-place. These options have different behaviors and different usage scenarios.

To create a new, sorted list, use the sorted() function on the old list:

new_list = sorted(old_list)

This will sort the contents of the list using Python’s default sorting methods. For strings, the default is alphabetical order; for numbers, it’s ascending values. Note that the contents of the list need to be consistent for this to work. For instance, you can’t sort a mix of integers and strings, but you can sort a list that is all integers or all strings. Otherwise you’ll get a TypeError in the sort operation.

If you want to sort a list in reverse, pass the reverse parameter:

new_list = sorted(old_list, reverse=True)

The other way to sort, in-place sorting, performs the sort operation directly on the original list. To do this, use the list’s .sort()method:

old_list.sort()

.sort() also takes reverse as a parameter, allowing you to sort in reverse.

Both sorted() and .sort() also take a key parameter. The key parameter lets you provide a function that can be used to perform a custom sorting operation. When the list is sorted, each element is passed to the key function, and the resulting value is used for sorting. For instance, if we had a mix of integers and strings, and we wanted to sort them, we could use key like this:

mixed_list = [1,"2",3,"4", None] def sort_mixed(item): try: return int(item) except: return 0 sorted_list = sorted(mixed_list, key = sort_mixed) print (sorted_list)

Note that this code wouldn’t convert each element of the list into an integer! Rather, it would use the integer value of each item as its sort value. Also note how we use a try/except block to trap any values that don’t translate cleanly into an integer, and return 0 for them by default.

Python lists are not arrays

One important thing to know about lists in Python is that they aren’t “arrays.” Other languages, like C, have one-dimensional or multi-dimensional constructions called arrays that accept values of a single type. Lists are heterogenous; they can accept objects of any type.

What’s more, there is a separate array type in Python. The Python array is designed to emulate the behavior of an array in C, and it’s meant chiefly to allow Python to work with C arrays. The array type is useful in those cases, but in almost every pure-Python case you’ll want to use lists.

When to use Python lists (and when not to)

So when are Python lists most useful? A list is best when:

  • You need to find things quickly by their position in a collection. Accessing any position in a list takes the same amount of time, so there is no performance penalty for looking up even the millionth item in a list.
  • You’re adding and removing to the collection mainly by appending to the end or removing from the end, in the manner of a stack. Again, these operations take the same amount of time regardless of the length of the list.

A Python list is less suitable when:

  • You want to find an item in a list, but you don’t know its position. You can do this with the .index() property. For instance, you could use list_of_ints.index(1) to find the index of the first occurrence of the number 1 in list_of_ints. Speed should not be not an issue if your list is only a few items long, but for lists thousands of items long, it means Python has to search the entire list. For a scenario like this, use a dictionary, where each item can be found using a key, and where the lookup time will be the same for each value.
  • You want to add or remove items from any position but the end. Each time you do this, Python must move every other item after the added or removed item. The longer the list, the greater the performance issue this becomes. Python’s deque object is a better fit if you want to add or remove objects freely from either the start or the end of the list.

How to do more with Python

  • How to package Python apps with BeeWare Briefcase
  • How to run Anaconda side by side with other Pythons
  • How to use Python dataclasses
  • Get started with async in Python
  • How to use asyncio in Python
  • 3 steps to a Python async overhaul
  • How to use PyInstaller to create Python executables
  • Cython tutorial: How to speed up Python
  • How to install Python the smart way
  • How to manage Python projects with Poetry
  • How to manage Python projects with Pipenv
  • Virtualenv und venv: Erklärte virtuelle Python-Umgebungen
  • Python virtualenv und venv tun und nicht tun
  • Python-Threading und Unterprozesse erklärt
  • Verwendung des Python-Debuggers
  • Verwendung von timeit zum Profilieren von Python-Code
  • Verwendung von cProfile zum Profilieren von Python-Code
  • So konvertieren Sie Python in JavaScript (und wieder zurück)