0
votes

comment prendre tous les n éléments d'une file d'attente dans une liste de liste en python

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)]


1 commentaires

C'est ce qu'est zip () pour. De plus, n'utilisez pas list comme variable, elle remplace la variable intégrée.


4 Réponses :


1
votes

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]


0 commentaires

1
votes

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)


0 commentaires

0
votes

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)


0 commentaires

0
votes

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.


0 commentaires