Je crée une liste nommée 'temp' dans une boucle et l'ajoute à une liste mère 'trouble'. Quand j'ajoute «temp» à «trouble» dans la deuxième partie de la boucle, le «trouble» lui-même semble changer. J'ai simplifié le code pour inclure uniquement cette instance pour plus de clarté.Python: Ajout de la liste à la liste changeante
award=[[['A',1],['B',1]],[['A',1],['C',1]],[['A',1],['C',1],['D',1]]]
trouble=[]
print '\n'
for n in range(len(award)-1):
temp=[]
for i in range(len(award[n])):
temp.append(award[n][i])
for i in range(len(award[n+1])):
for k in range(len(temp)):
if(temp[k][0]==award[n+1][i][0]):
temp[k][1]+=award[n+1][i][1]
break
else:
temp.append(award[n+1][i])
print 'temp', temp
trouble.append(temp)
print '\tn = ',n, '\n\ttrouble'
for i in range(len(trouble)):
print trouble[i]
print '\n'
La sortie ressemble à ceci:
temp [['A', 2], ['B', 1], ['C', 1]]
n = 0
trouble
[['A', 2], ['B', 1], ['C', 1]]
temp [['A', 2], ['C', 2], ['D', 1]]
n = 1
trouble
[['A', 2], ['B', 1], ['C', 2]]
[['A', 2], ['C', 2], ['D', 1]]
Je ne comprends pas pourquoi [ 'C', 1], qui n'a pas (selon moi) été touché après la première instance de annexant, est changé après la deuxième instance de l'ajout.
Toute aide sera grandement appréciée.
Merci d'avance.
Anagha Madhusudanan
désolé, c'est horrible code –
qu'est-ce que vous essayez réellement de faire ici? –
Je ne veux pas être critique, mais ce code est presque illisible. Si vous avez absolument besoin d'accéder aux index numériques des éléments d'une liste en python, accédez-y via 'pour idx, item dans enumerate (lst)'. Au-delà de cette suggestion pour vous aider à nettoyer cela, je n'ai honnêtement aucune capacité à déchiffrer ce que vous voulez. Je ne peux pas le faire mentalement assez bien pour voir où vous vous trompez, mais cela n'aide pas que votre liste de récompenses soit profondément imbriquée avec des sous-listes de différentes longueurs. –