Créer une liste de tuples à partir de plusieurs listes et tuples en Python

Vaibhav Vaibhav 10 octobre 2023
  1. Créer manuellement une liste de tuples à partir de plusieurs listes et tuples en Python
  2. Créer une liste de tuples à partir de plusieurs listes et tuples avec la méthode zip() en Python
Créer une liste de tuples à partir de plusieurs listes et tuples en Python

Lorsque vous travaillez avec plusieurs listes et tuples, nous devons souvent combiner les valeurs présentes à l’intérieur des objets. Cette approche rend leur itération beaucoup plus simple. Lors du développement d’applications Web ou d’API à l’aide de Python, cette approche est principalement suivie pour s’assurer que nous n’avons aucune valeur manquante. De plus, il devient très difficile d’itérer sur ces valeurs à l’intérieur des modèles HTML.

Dans cet article, nous allons apprendre à créer une liste de tuples et de tuples à partir de plusieurs listes en Python.

Créer manuellement une liste de tuples à partir de plusieurs listes et tuples en Python

L’approche la plus basique pour créer une liste de tuples à partir de plusieurs listes et tuples consiste à écrire vous-même un stub ou une fonction utilitaire. La fonction accepterait plusieurs listes et tuples et renverrait une liste de tuples. Lors de l’itération sur les listes, la logique devrait s’assurer qu’elle ne considère que la plus petite longueur sur toutes les listes et n’ajoute des éléments que jusqu’à cet index. Le code Python suivant implémente l’approche décrite.

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)

Production :

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

La fonction convert() accepte plusieurs listes et tuples comme arguments. Tout d’abord, il vérifie si chaque argument passé est une instance de list ou tuple. Sinon, il renvoie une liste vide. Ensuite, il trouve la plus petite longueur, disons n, dans toutes les listes et tuples. Cette opération garantit que nous ne rencontrons pas l’exception IndexError.

Une fois la plus petite taille trouvée, la fonction convert() crée une liste vide et itère sur tous les arguments n fois. Chaque itération crée un tuple et l’ajoute à la liste vide créée auparavant. Une fois l’itération terminée, la liste des tuples est renvoyée en réponse.

En considérant le nombre d’arguments comme n et la plus petite longueur comme m, la complexité temporelle de la fonction ci-dessus est O(m * n), et la complexité spatiale est également O(m * n). La complexité temporelle est de O(m * n) à cause de la double boucle imbriquée for qui crée le résultat.

Créer une liste de tuples à partir de plusieurs listes et tuples avec la méthode zip() en Python

La fonction zip() est la fonction utilitaire intégrée de Python. Il accepte plusieurs objets itérables tels que des listes et des tuples et renvoie un objet itérable. Cet objet zip stocke les éléments sous la forme d’une liste de tuples. L’implémentation de la fonction zip() serait similaire, mais pas exacte, à la fonction convert() que nous avons implémentée dans la dernière section.

La valeur renvoyée par la fonction zip() est un objet zip itérable. Si nous l’imprimions, la sortie serait similaire à ce qui suit.

<zip object at 0x7fee6d0628c0>

Maintenant que nous en avons fini avec la théorie, comprenons comment utiliser la méthode zip() pour notre cas d’utilisation. Reportez-vous au code suivant pour la même chose.

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)

Production :

(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.

Article connexe - Python List

Article connexe - Python Tuple