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()
4 Réponses :
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])
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
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])
OP dit que "les index des listes internes contiennent le même type d'informations" non seulement sur la première
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
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
Pourquoi ne pas l'exécuter et voir?
itemne devrait-il pas être un argument dedoSomething ()alors? (Parce que vous utiliseriez plutôtitem [0].)