J'essaye de sauvegarder le résultat d'une boucle for imbriquée dans une liste en python. quelqu'un peut-il me dire comment faire? V est un tableau contenant [1, 2, 3] tandis que n est la longueur = 3 et sq est la matrice contenant les swaps.
J'ai essayé de nombreuses approches mais chaque fois que je renvoie le résultat, cela ne me donne qu'un élément de la liste. Toute aide serait appréciée. Merci
def Permute1(sq,v,n):
for i in range(n):
for j in range(n):
if (sq[i,j]==1):
temp=v[i]
v[i]=v[j]
v[j]=temp
print(v)
results:
[1, 2, 3]
[2, 1, 3]
[3, 1, 2]
[3, 1, 2]
[3, 2, 1]
[3, 2, 1]
3 Réponses :
Je ne suis pas sûr de l'utilité de d = v ici.
Pour permuter deux éléments en Python, je recommande:
v[i], v[j] = v[j], v[i]
Déclarer une liste vide avant les boucles for et ajouter les valeurs (comme l'a dit AkshayNevrekar) peut également être utile, en fonction de ce dont vous avez besoin en conséquence.
désolé c'était une ligne ajoutée par erreur
Pouvez-vous donner le code complet avec les paramètres que vous passez à la fonction? Juste pour voir si je peux obtenir la réponse souhaitée.
Vérifiez rendement .
Vous pouvez l'utiliser pour générer toutes les permutations et traiter chacune d'elles et les stocker dans une liste.
def Permute1(sq,v,n):
result=[]
for i in range(n):
for j in range(n):
if (sq[i,j]==1):
temp=v[i]
v[i]=v[j]
v[j]=temp
result += [v]
print(result)
return result
No tested but may be it can help.
déclarer une liste vide avant les boucles
foret ajouter les valeursj'ai essayé de le faire. mais il s'avère que lorsque je retourne la liste, il ne me donne que le dernier élément de la liste. c'est-à-dire [3,2,1]
a = [] pour i dans la plage (n): pour j dans la plage (n): if (sq [i, j] == 1): temp = v [i] v [i] = v [j ] v [j] = temp a.append (v) print (a)renvoie [[3, 2, 1], [3, 2, 1], [3, 2, 1], [3, 2, 1], [3, 2, 1], [3, 2, 1]]
Vous devez ajouter une copie de
vàa. Python ne copiera jamais rien (sauf les valeurs numériques) implicitement.salut, pouvez-vous me donner une idée sur la façon de le faire?