Список изменений цикла, которые не следует [дублировать]Python

Программы на Python
Ответить
Anonymous
 Список изменений цикла, которые не следует [дублировать]

Сообщение Anonymous »

Я пишу мутатор весов для своей нейронной сети. Функция "distribute_genome" должна слегка мутировать лучший геном и возвращать его.

Код: Выделить всё

import random
best_genome = [[1, 2, 3], [4, 5, 6]]
def distribute_genome():
unique_genom = best_genome
print(best_genome)
for i in range(len(unique_genom)):
for j in range(len(unique_genom[i])):
unique_genom[i][j] += random.randint(-2, 2) #mutation
print(best_genome)
print("does not work" if unique_genom == best_genome else "ok")
return unique_genom
print(distribute_genome())
Но я заметил, что best_genome меняется при запуске функции. Вскоре я обнаружил, что этот цикл меняет его: если я удалю цикл, best_genome останется прежним.

Код: Выделить всё

    for i in range(len(unique_genom)):
for j in range(len(unique_genom[i])):
unique_genom[i][j] += random.randint(-2, 2) #mutation
Я узнал причину этой ошибки и вопрос с той же проблемой, но результат все равно тот же, как здесь:

Код: Выделить всё

import random
best_genome = [[1, 2, 3], [4, 5, 6]]
def distribute_genome():
unique_genom = list(best_genome)
for i in range(len(unique_genom)):
for j in range(len(unique_genom[i])):
unique_genom[i][j] += random.randint(-2, 2) #mutation
return unique_genom

print("does not work" if distribute_genome() == best_genome else "works")
>does not work
Как мне это исправить?

Подробнее здесь: https://stackoverflow.com/questions/792 ... should-not
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»