J'ai une liste test = [a, b, c, d, e, f, g, h, i] , je veux mettre ces éléments dans trois listes vides (list1 = [ ], list2 = [], list3 = []) en fonction des heures d'index
Résultat attendu: list1 = [a, d, g], list2 = [b, e, h], list3 = [c, f, i] , leurs index sont index1 = [0,3,6] index2 = [1,4,7] index3 = [2,5,8] , en fait indexs_list ne sont pas définis, je veux juste les utiliser pour bien décrire la question < / p>
Je n'ai pas d'idée, est-ce que je peux m'aider?
4 Réponses :
Avec numpy :
>>> print(l1,l2,l3) ['a' 'd' 'g'] ['b' 'e' 'h'] ['c' 'f' 'i']
Sorties:
import numpy as np l1,l2,l3=np.array(test).reshape(3,-1, order='F')
Réf: https://docs.scipy.org/doc/numpy/ reference / generated / numpy.reshape.html
Utilisation de vanilla python:
['a', 'd', 'g'] ['b', 'e', 'h'] ['c', 'f', 'i']
Sortie:
test=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
my_lists = [[], [], []]
for mod in range(3):
my_lists[mod] = [elem for i, elem in enumerate(test) if i % 3 == mod]
list0 = my_lists[0]
list1 = my_lists[1]
list2 = my_lists[2]
print(list0, list1, list2)
Gardez à l'esprit que cette solution ne fonctionne que pour ces listes d'index spécifiques (et pour ces listes spécifiques, une solution plus simple est possible). En général, cette solution ne fonctionne pas.
Une compréhension de liste suffit, bien que ce ne soit pas la solution la plus efficace (itère dans la liste trois fois) et ne fonctionne que si vous avez un nombre fixe de listes d'index:
list1, list2, list3 = [[test[i] for i in index ]
for index in (index1, index2, index3)]
J'imagine que vous commencez avec Python.
Pour cette raison, je voudrais suggérer une solution très simple en utilisant simplement les bases de Python:
list_1: ['a', 'd', 'g'] list_2: ['b', 'e', 'h'] list_3: ['c', 'f', 'i']
Sortie
list_1_indexes = [0,3,6]
list_2_indexes = [1,4,7]
list_3_indexes = [2,5,8]
test=["a", "b", "c", "d", "e", "f", "g", "h", "i"]
list_1 = []
list_2 = []
list_3 = []
for index in list_1_indexes:
list_1.append(test[index])
for index in list_2_indexes:
list_2.append(test[index])
for index in list_3_indexes:
list_3.append(test[index])
print("list_1:")
print(list_1)
print("\nlist_2:")
print(list_2)
print("\nlist_3:")
print(list_3)
Voulez-vous aussi les listes «d'index», ou s'agit-il simplement d'afficher les numéros d'index pertinents? Si vous les voulez, les structures de dictionnaire seraient-elles appropriées pour associer des lettres à des index? Enfin, voulez-vous faire cela d'une manière générique qui fonctionnera pour n'importe quel nombre de listes cibles ou simplement pour résoudre cet exemple spécifique?