Bonjour, j'ai écrit un petit programme qui:

1- insere un élément d'une liste (sim) dans une autre liste (k_nn).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
k_nn = [[999,'X'], [999,'X'], [999,'X'], [999,'X'], [999,'X'], [999,'X'], [999,'X']]
sim = [[2,'B'], [9,'F'], [3,'C'], [130, 'J'], [40,'I'], [23,'G'], [1, 'A'], [3,'C'], [8,'E'], [3,'C'], [25,'H'], [6,'D']]
2- l'élément inséré est une liste, par exemple l'élément
3- l'insertion par ordre de plus grand (tri):
le output doit être celà

Code : Sélectionner tout - Visualiser dans une fenêtre à part
[[1, 'A'], [2, 'B'], [3, 'C'], [3, 'C'], [3, 'C'], [6, 'D'], [8, 'E']]
Voilà mon programme:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
k_nn = [[999,'X'], [999,'X'], [999,'X'], [999,'X'], [999,'X'], [999,'X'], [999,'X']]
sim = [[2,'B'], [9,'F'], [3,'C'], [130, 'J'], [40,'I'], [23,'G'], [1, 'A'], [3,'C'], [8,'E'], [3,'C'], [25,'H'], [6,'D']]
 
def add_s(boolean, s):
	i = 0
	while boolean == False:
 
		if s[0] < k_nn[i][0]:
			k_nn.insert(i, s)
			del k_nn[7:]
			boolean = True
		else:
			i += 1
boolean = False
maxi = len(k_nn)
 
for s in sim:
    if s[0] < k_nn[maxi-1]:
        add_s (boolean, s)
print k_nn
L'erreur :
Traceback (most recent call last):
File "C:\Users\....\Desktop\.....\test_1.py", line 25, in <module>
add_s (boolean, s)
File "C:\Users\....\Desktop\......\test_1.py", line 14, in add_s
if s[0] < k_nn[i][0]:
IndexError: list index out of range
[Finished in 0.2s with exit code 1]