J'ai deux listes imbriquées en python, par exemple:moyen efficace de rabouter deux listes de listes en python
lst1 = [
[ [1,2],[3,4] ], [ [5,6,7],[8,9,10] ]
]
lst2 = [
[ [11,12],[13,14] ], [ [15,16,17],[18,19,20] ]
]
Je voudrais être en mesure de mettre dans un index correspondant à la version aplatie les listes, et retourner la liste "croisée":
par exemple l'indice est de 5, la sortie est la nouvelle liste
lst3 = [
[ [1,2],[3,4] ], [ [5,16,17],[18,19,20] ]
]
Je peux le faire en faisant une triple boucle imbriquée mais je sais qu'il doit y avoir un moyen plus rapide en python, en utilisant probablement le iterator?
EDIT: Je demande comment plus efficacement procédez comme suit:
lst1 = [
[ [1,2],[3,4] ], [ [5,6,7],[8,9,10] ]
]
lst2 = [
[ [11,12],[13,14] ], [ [15,16,17],[18,19,20] ]
]
lst3 = []
counter = 0
for i in xrange(len(lst1)):
for j in xrange(len(lst1[i])):
temp1 = []
for k in xrange(len(lst1[i][j])):
temp2 = []
counter += 1
if counter > 5:
temp2.append(lst2[i][j][k])
else:
temp2.append(lst1[i][j][k])
temp1.append(temp2)
lst3.append(temp1)
print lst1
print lst2
print lst3
lst3 Résultat:
[[[1], [2]], [[3], [4]], [[5], [16], [17]], [[18], [19], [20]]]
Vous allez devoir expliquer comment cette entrée correspond à cette sortie. – user2357112
Parcourez [le didacticiel] (https://docs.python.org/3/tutorial/index.html#the-python-tutorial) pour vous faire une idée des outils à votre disposition. Peut-être commencer par écrire sur papier, dans votre langue * naturelle *, les étapes nécessaires pour accomplir la tâche. Essayez de transformer cela en pseudo-code et enfin en code réel. Si vous êtes coincé avec le code réel, revenez et demandez. S'il vous plaît lire [demander] et [mcve]. – wwii