En Python, un tableau bidimensionnel peut être représenté par une liste de listes. Cet article explique comment transposer une liste de listes 2D.
L’utilisation de NumPy et pandas est plus pratique, mais si vous ne souhaitez pas les importer uniquement pour la transposition, la fonction intégrée 𝐳𝐢𝐩() est une alternative viable.
Considérez la liste bidimensionnelle suivante.
import numpy as np import pandas as pd l_2d = [[0, 1, 2], [3, 4, 5]]
Convertir en 𝐧𝐮𝐦𝐩𝐲.𝐧𝐝𝐚𝐫𝐫𝐚𝐲 et transposer avec T
Convertissez la liste 2D d’origine en un tableau NumPy ( 𝐧𝐮𝐦𝐩𝐲.𝐧𝐝𝐚𝐫𝐫𝐚𝐲 ), puis obtenez l’objet transposé avec l’ attribut T.
Si vous voulez un objet de type 𝐥𝐢𝐬𝐭 , convertissez-le en 𝐥𝐢𝐬𝐭 avec la méthode 𝐭𝐨𝐥𝐢𝐬𝐭() .
arr_t = np.array(l_2d).T print(arr_t) print(type(arr_t)) # [[0 3] # [1 4] # [2 5]] # <class 'numpy.ndarray'> l_2d_t = np.array(l_2d).T.tolist() print(l_2d_t) print(type(l_2d_t)) # [[0, 3], [1, 4], [2, 5]] # <class 'list'>
En plus de l’attribut T , vous pouvez également utiliser la méthode 𝐭𝐫𝐚𝐧𝐬𝐩𝐨𝐬𝐞() de 𝐧𝐝𝐚𝐫𝐫𝐚𝐲 ou la fonction 𝐧𝐮𝐦𝐩𝐲.𝐭𝐫𝐚𝐧𝐬𝐩𝐨𝐬𝐞() . Reportez-vous à l’article suivant pour plus de détails.
Convertissez en 𝐩𝐚𝐧𝐝𝐚𝐬.D𝐚𝐭𝐚F𝐫𝐚𝐦𝐞 et transposez avec T
Convertissez la liste 2D d’origine en 𝐩𝐚𝐧𝐝𝐚𝐬.D𝐚𝐭𝐚F𝐫𝐚𝐦𝐞 , puis obtenez l’objet transposé avec l’attribut T.
Si vous voulez un objet de type 𝐥𝐢𝐬𝐭 , procurez-vous le 𝐧𝐮𝐦𝐩𝐲.𝐧𝐝𝐚𝐫𝐫𝐚𝐲 en utilisant l’attribut 𝐯𝐚𝐥𝐮𝐞𝐬 du D𝐚𝐭𝐚F𝐫𝐚𝐦𝐞 , puis convertissez-le en 𝐥𝐢𝐬𝐭 avec la méthode 𝐭𝐨𝐥𝐢𝐬𝐭() .
df_t = pd.DataFrame(l_2d).T print(df_t) print(type(df_t)) # 0 1 # 0 0 3 # 1 1 4 # 2 2 5 # <class 'pandas.core.frame.DataFrame'> l_2d_t = pd.DataFrame(l_2d).T.values.tolist() print(l_2d_t) print(type(l_2d_t)) # [[0, 3], [1, 4], [2, 5]] # <class 'list'>
Transposer avec la fonction intégrée 𝐳𝐢𝐩()
Vous pouvez transposer une liste 2D à l’aide de la fonction intégrée 𝐳𝐢𝐩() .
La fonction 𝐳𝐢𝐩() renvoie un itérateur qui combine plusieurs itérables, tels que 𝐥𝐢𝐬𝐭 et 𝐭𝐮𝐩𝐥𝐞 .
De plus, * vous permet de développer une liste et de transmettre ses éléments comme arguments à la fonction.
l_2d_t_tuple = list(zip(*l_2d)) print(l_2d_t_tuple) print(type(l_2d_t_tuple)) # [(0, 3), (1, 4), (2, 5)] # <class 'list'> print(l_2d_t_tuple[0]) print(type(l_2d_t_tuple[0])) # (0, 3) # <class 'tuple'>
Les éléments sont au format 𝐭𝐮𝐩𝐥𝐞 . Pour les convertir en 𝐥𝐢𝐬𝐭 , vous pouvez utiliser une compréhension de liste en combinaison avec 𝐥𝐢𝐬𝐭() .
l_2d_t = [list(x) for x in zip(*l_2d)] print(l_2d_t) print(type(l_2d_t)) # [[0, 3], [1, 4], [2, 5]] # <class 'list'> print(l_2d_t[0]) print(type(l_2d_t[0])) # [0, 3] # <class 'list'>
Voici une explication détaillée : les éléments de la liste sont développés à l’aide de * , combinés avec 𝐳𝐢𝐩() , puis convertis de 𝐭𝐮𝐩𝐥𝐞 en 𝐥𝐢𝐬𝐭 à l’aide de la compréhension de liste.
print(*l_2d) # [0, 1, 2] [3, 4, 5] print(list(zip([0, 1, 2], [3, 4, 5]))) # [(0, 3), (1, 4), (2, 5)] print([list(x) for x in [(0, 3), (1, 4), (2, 5)]]) # [[0, 3], [1, 4], [2, 5]]
