Au b[i][j]
vous essayez d'accéder au jème élément du ème élément. Cependant, b n'est qu'une liste vide, donc le ième élément n'existe pas, et encore moins le jième élément de ce ième élément.
Vous pouvez y remédier en ajoutant les éléments à b. Mais d'abord, une liste (ligne) doit être créée (ajoutée à b) pour chaque liste (ligne) dans a.
L'exemple suivant utilise la fonction enumerate
fonction. Elle renvoie l'index et l'élément, donc si vous le souhaitez, vous pouvez toujours faire des choses avec i et j, mais cela vous empêchera d'obtenir une valeur de IndexError
. Vous pouvez toujours utiliser en toute sécurité a[i][j]
car les indices sont dérivés de a
.
a = [
['a', 'b'],
['c', 'd']
]
b = []
for i, row in enumerate(a): # loop over each list (row) in a
b_row = [] # list (row) which will be added to b
for j, element in enumerate(row): # loop over each element in each list (row) in a
if a[0][0] == 'a': # Not sure why each the first element of a has to be checked each loop # Probably a simplification of the operations.
a[0][0] = 'b'
else:
b_row.append(element) # append the element to the list(row) that will be added to b
b.append(b_row) # When the row is filled, add it to b
print(b)
Un dernier commentaire : il n'est pas recommandé de modifier une liste tout en la parcourant en boucle en Python (comme dans la fonction if
). Il est préférable d'appliquer ces changements à votre liste de sortie, qui est b. S'il s'agit simplement d'une simplification du processus, ignorez cette remarque.