Sono molto nuovo a Python, cercando di imparare le basi. Hai un dubbio sulla lista.Come modificare gli elementi in una lista all'interno dell'elenco
dispone di un elenco:
L = [[1,2,3],[4,5,6],[3,4,6]]
L'output dovrebbe essere:
[[2,4,6],[8,10,12],[6,8,12]]
Il codice che funziona per me è la seguente
for x in range(len(L)):
for y in range(len(L[x])):
L[x][y] = L[x][y] + L[x][y]
print L
Dà l'uscita [[2,4,6],[8,10,12],[6,8,12]]
.
Ora voglio la stessa uscita con un codice diverso:
for x in L:
a = L.index(x)
for y in L[a]:
b = L[a].index(y)
L[a][b] = L[a][b] + L[a][b]
print L
Con il codice sopra l'output ottenuto è:
[[4,2,6],[8,10,12],[12,8,6]]
ho cercato di eseguire il debug circa l'uscita di cui sopra. Ho inserito una dichiarazione di stampa sopra la riga "L[a][b] = L[a][b] + L[a][b]"
per stampare ae b. Sono rimasto sorpreso di vedere i valori di A e B sono:
0,0
0,0
0,2
1,0
1,1
1,2
2,0
2,1
2,0
Anche in questo caso se io commento la linea "L[a][b] = L[a][b] + L[a][b]"
allora i valori di A e B sono come ci si aspettava:
0,0
0,1
0,2
1,0
1,1
1,2
2,0
2,1
2,2
ho il sospetto che questo potrebbe sta accadendo a causa della portata della variabile in python e ho provato a studiare alcune cose sull'ambito dell'ambito in python. Ma non ho ottenuto risposta appropriata né per l'ambito o la domanda di cui sopra.
la risposta è abbastanza evidente nel secondo ciclo della interno 'ciclo for', una volta che la si modifica' L [0] [0] 'a' 2' e poi cerca l'indice di '2', ma il tuo codice sembra inutilmente complicato, il che mi chiede di farlo chiedi .. Stai cercando di ottenere qualcosa di più semplice del tuo codice originale? – Obsidian