Erstellen eine Liste von Tupeln aus mehreren Listen und Tupeln in Python

Vaibhav Vaibhav 10 Oktober 2023
  1. Manuelle Erstellung einer Liste von Tupeln aus mehreren Listen und Tupeln in Python
  2. Erstellen eine Liste von Tupeln aus mehreren Listen und Tupeln mit der zip()-Methode in Python
Erstellen eine Liste von Tupeln aus mehreren Listen und Tupeln in Python

Wenn wir mit mehreren Listen und Tupeln arbeiten, müssen wir oft die in den Objekten vorhandenen Werte kombinieren. Dieser Ansatz macht das Iterieren über sie viel einfacher. Bei der Entwicklung von Webanwendungen oder APIs mit Python wird dieser Ansatz meistens verfolgt, um sicherzustellen, dass wir keine fehlenden Werte haben. Darüber hinaus wird es sehr schwierig, diese Werte innerhalb von HTML-Vorlagen zu durchlaufen.

In diesem Artikel erfahren Sie, wie Sie in Python eine Liste mit Tupeln und Tupeln aus mehreren Listen erstellen.

Manuelle Erstellung einer Liste von Tupeln aus mehreren Listen und Tupeln in Python

Der grundlegendste Ansatz zum Erstellen einer Liste von Tupeln aus mehreren Listen und Tupeln besteht darin, selbst eine Stub- oder Hilfsfunktion zu schreiben. Die Funktion würde mehrere Listen und Tupel akzeptieren und eine Liste von Tupeln zurückgeben. Beim Durchlaufen der Listen müsste die Logik sicherstellen, dass sie nur die kleinste Länge über alle Listen berücksichtigt und Elemente nur bis zu diesem Index hinzufügt. Der folgende Python-Code implementiert den besprochenen Ansatz.

def convert(*args):
    """
    Returns a list of tuples generated from multiple lists and tuples
    """
    for x in args:
        if not isinstance(x, list) and not isinstance(x, tuple):
            return []

    size = float("inf")

    for x in args:
        size = min(size, len(x))

    result = []

    for i in range(size):
        result.append(tuple([x[i] for x in args]))

    return result


a = [1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8]
b = ["H", "E", "L", "L", "O"]
c = [True, False, False, True, True, True]
d = [100, 200, 300, 400]
result = convert(a, b, c, d)
print(result)

Ausgabe:

[(1.1, 'H', True, 100), (2.2, 'E', False, 200), (3.3, 'L', False, 300), (4.4, 'L', True, 400)]

Die Funktion convert() akzeptiert mehrere Listen und Tupel als Argumente. Zuerst prüft es, ob jedes übergebene Argument eine Instanz von list oder tuple ist. Wenn nicht, wird eine leere Liste zurückgegeben. Als nächstes findet es die kleinste Länge, sagen wir n, über alle Listen und Tupel hinweg. Diese Operation stellt sicher, dass wir nicht auf die Ausnahme IndexError stoßen.

Sobald die kleinste Größe gefunden ist, erstellt die Funktion convert() eine leere Liste und iteriert n-mal über alle Argumente. Jede Iteration erstellt ein Tupel und hängt es an die zuvor erstellte leere Liste an. Sobald die Iteration abgeschlossen ist, wird die Liste der Tupel als Antwort zurückgegeben.

Betrachtet man die Anzahl der Argumente als n und die kleinste Länge als m, so ist die Zeitkomplexität der obigen Funktion O(m * n) und die Raumkomplexität ebenfalls O(m * n). Die Zeitkomplexität ist O(m * n) wegen der doppelt verschachtelten for-Schleife, die das Ergebnis erzeugt.

Erstellen eine Liste von Tupeln aus mehreren Listen und Tupeln mit der zip()-Methode in Python

Die Funktion zip() ist Pythons eingebaute Hilfsfunktion. Es akzeptiert mehrere iterierbare Objekte wie Listen und Tupel und gibt ein iterierbares Objekt zurück. Dieses zip-Objekt speichert Elemente als Liste von Tupeln. Die Implementierung der Funktion zip() wäre ähnlich, nicht exakt, wie die Funktion convert(), die wir im letzten Abschnitt implementiert haben.

Der von der Funktion zip() zurückgegebene Wert ist ein iterierbares zip-Objekt. Wenn wir es drucken würden, würde die Ausgabe der folgenden ähneln.

<zip object at 0x7fee6d0628c0>

Nachdem wir nun mit der Theorie fertig sind, wollen wir verstehen, wie die Methode zip() für unseren Anwendungsfall verwendet wird. Siehe dazu den folgenden Code.

a = [1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8]
b = ("H", "E", "L", "L", "O")
c = [True, False, False, True, True, True]
d = [100, 200, 300, 400]
result = zip(a, b, c, d)

for x in result:
    print(x)

Ausgabe:

(1.1, 'H', True, 100)
(2.2, 'E', False, 200)
(3.3, 'L', False, 300)
(4.4, 'L', True, 400)
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Verwandter Artikel - Python List

Verwandter Artikel - Python Tuple