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 paslistcomme variable, elle remplace la variable intégrée.