Transposer une liste de listes
Étant donné une liste de listes, telle que :
l = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Notre objectif est pour transposer la liste, ce qui donne :
r = [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
Utiliser zip
La fonction zip() en Python combine des éléments de plusieurs itérables en une seule liste de tuples. Nous pouvons utiliser zip pour créer une liste transposée en passant la liste d'origine sous forme de séquence d'arguments :
result = list(map(list, zip(*l)))
La liste externe() convertit les tuples en listes, et la fonction map() applique cette transformation à chaque élément du résultat zip.
Utilisation de zip_longest
Le La fonction itertools.zip_longest() est similaire à zip, mais elle ne supprime pas les données si les itérables ont des longueurs différentes. Il remplit les itérables plus courts avec une valeur de remplissage spécifiée (Aucune par défaut) :
from itertools import zip_longest result = list(map(list, zip_longest(*l, fillvalue=None)))
Explication
La clé de la transposition est l'utilisation de zip pour combiner des éléments du les sous-listes de la liste originale. La fonction zip() génère des tuples contenant un élément de chaque sous-liste au même index. Ces tuples sont ensuite convertis en listes pour créer les lignes de la liste transposée.
En utilisant l'opérateur * pour décompresser la liste d'origine en arguments pour compresser, nous pouvons transposer la liste en une seule ligne de code. La fonction map() est utilisée pour garantir que le résultat est une liste de listes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!