Я пытаюсь создать программу, которая удаляет определенные элементы из группы списков, если выполняется определенное условие, и дублирует их, если происходит определенное другое. Но у меня есть следующая проблема: , когда программа находится в итерации 50 из 100, она помечает IndexError и закрывает .
Вот фрагмент кода, в котором у меня возникла проблема:
nnl_len = len(neuralNetworkList) # longitud de lista de objetos
fitl_copy = fitness # lista de floats
best_fitness_reproduced = 0
if worst_fitness < 0 and first_iteration == 0: # supongo que esto se
worst_fitness = 0 # puede ignorar
for i in range(nnl_len):
print(i)
if fitl_copy[i] < best_fitness: # LINEA EXACTA DEL ERROR <------------------
print("I DIED WITH A FITNESS OF ",fitness[i], ", BEING THE LIMIT ",best_fitness)
neuralNetworkList.pop(i)
x.pop(i)
y.pop(i)
fitness.pop(i)
colors.pop(i)
elif fitl_copy[i] == best_fitness and best_fitness_reproduced:
print("I DIED BECAUSE A TOP FITNESS CREATURE ALREADY REPRODUCED ",fitness[i])
neuralNetworkList.pop(i)
x.pop(i)
y.pop(i)
fitness.pop(i)
colors.pop(i)
else:
best_fitness_reproduced = 1
for j in range(99): # plus the mother is 100
print("I SURVIVED WITH A FITNESS OF ",fitness[i], ", BEING THE LIMIT ",best_fitness)
neuralNetworkList.append(neuralNetworkList[i])
if random.randint(1,3) == 1:
neuralNetworkList[i].mutate(i)
x.append(width)
y.append(height)
fitness.append(0)
newcolor = []
for h in range(3):
newcolor.append(round( colors[i][h]*random.choice((0.9, 1.1)) ))
colors.append(newcolor)
#except IndexError:
# pass
# print("I NEITHER DIED NOR REPRODUCED BECAUSE OF AN INDEX ERROR")
nnl_len = len(neuralNetworkList)
for i in range(nnl_len):
x[i] = width
y[i] = height
fitness[i] = 0
print("population after reproduction:", len(neuralNetworkList))
ОБНОВЛЕНИЕ:
Трассировка (последний последний вызов):
Файл "C: \ Users \ Пользователь \ Рабочий стол \ Archivos pavos \ Sublime Text 3 \ pruebas_phyton.pyw", строка 4921, если if fitl_copy [i]