Comment puis-je prendre le premier élément de toute la liste et également le deuxième élément de toute la liste et ainsi de suite. Imaginez que j'ai une liste dans la liste
lst = [[3942, 3969, 3078], [1111, 1664, 1565], [4367, 4600, 3486], [1562, 1957, 2061]]
Comment puis-je obtenir tous les premiers éléments de la liste et les changer en tuple pour tous les éléments de la liste.
J'ai essayé list = [ list [0] for list in list] mais cela ne me donne que le premier élément de chaque liste.
Résultat attendu
[(3942,1111,4367,1562), (3969,1664,4600,1957), (3078,1565,3486,2061)]
4 Réponses :
En fonction de vos besoins, je pense qu'une solution possible est de l'analyser comme un tableau 2D et d'en trouver la transposition.
import numpy as np ll = [[3942, 3969, 3078], [1111, 1664, 1565], [4367, 4600, 3486], [1562, 1957, 2061]] llt = np.transpose(ll) new_tuple_list = [tuple(l) for l in llt]
Une autre approche
from operator import itemgetter test = [[3942, 3969, 3078], [1111, 1664, 1565], [4367, 4600, 3486], [1562, 1957, 2061]] result = [] for i in range(0, len(test) - 1): result.append(tuple(map(itemgetter(i), test))) print(result)
Vous ne pouvez pas utiliser 'list' comme variable car c'est un mot clé. Quoi qu'il en soit, vous pouvez faire quelque chose comme ceci:
lit = [[3942, 3969, 3078], [1111, 1664, 1565], [4367, 4600, 3486]] n = len(lit[0]) final_li = [] for i in range(0,n): new_li = [lit[i]for lit in lit] final_li.append(new_li) print(final_li)
Cela ne peut pas être plus simple que cela comme le souligne Mark:
[(3942, 1111, 4367, 1562), (3969, 1664, 4600, 1957), (3078, 1565, 3486, 2061)]
qui renvoie
temp = list(zip(*lst))
Voir Python zip () pour plus d'informations.
C'est ce qu'est
zip ()
pour. De plus, n'utilisez paslist
comme variable, elle remplace la variable intégrée.