0
votes

Est-il possible de parcourir uniquement un certain index dans une liste de listes?

J'ai une liste de listes où les index des listes internes contiennent le même type d'informations. Si je veux seulement parcourir cet index pour chaque liste, est-ce une instruction valide?

for item in list_of_lists[:][0]:
    doSomething()


2 commentaires

Pourquoi ne pas l'exécuter et voir?


item ne devrait-il pas être un argument de doSomething () alors? (Parce que vous utiliseriez plutôt item [0] .)


4 Réponses :


0
votes

vous pouvez parcourir vos listes de listes et accéder à chaque liste interne à votre index souhaité:

my_index = <some integer>

for item in lists_of_lists:
    doSomething(item[my_index])


0 commentaires

0
votes

Avec un tableau numpy, votre code fonctionnerait.

Avec les listes, vous devriez le faire:

2
12
22
32

Sortie:

# Some test data
list_of_lists = [
  [ 0,  1,  2,  3  ],
  [ 10, 11, 12 ,13 ],
  [ 20, 21, 22, 23 ],
  [ 30, 31, 32, 33 ]
]
index = 2 # the sublists index you want to iterate on

for item in ( sublist[index] for sublist in list_of_lists ):
  #doSomething() # Commented out for the demonstration to work
  print(item) # A print to see the values of item that you can remove


0 commentaires

0
votes

Si vous avez des listes internes contenant les mêmes informations, et que vous souhaitez effectuer une itération uniquement sur le premier interne, faites simplement:

[[1,2,3,4],
 [1,2,3,4],
 [1,2,3,4],
 [1,2,3,4],]

# iterate on 1,2,3,4
for item in list_of_lists[0]: # list_of_lists[0] is the 1st inner list
    doSomething(item)

# iterate on 2,2,2,2
for inner_list in list_of_lists: 
    doSomething(inner_list[1])


1 commentaires

OP dit que "les index des listes internes contiennent le même type d'informations" non seulement sur la première



0
votes

Si vous souhaitez effectuer une opération sur des colonnes plutôt que des lignes plusieurs fois, pensez à transposer vos données, par exemple:

2
5

Sortie:

list_of_lists = [[1,2,3],[4,5,6]]
transposed = list(zip(*list_of_lists))
print(transposed)  # [(1, 4), (2, 5), (3, 6)]
for item in transposed[1]:
    print(item)

Notez que cette solution n'est utile que si vous ne prévoyez pas de modifier le contenu de list_of_lists


1 commentaires

c'est correct, mais je pense que ce n'est pas facilement lisible, et pas optimisé car vous parcourez toutes les données, et pas seulement l'index voulu. Mais il y a clairement un intérêt pédagogique à voir zip en action pour la transposition de données