以前、ループとリストに関する質問をして、素晴らしいフィードバックをいくつか受け取りました。残念ながら、自分では解決できないように見える新しい問題に遭遇しました。コードの大きなブロックについてお詫び申し上げます。
import random
from pprint import pprint
petri_dish = []
lst = [y for y in petri_dish if y.status == 1]
turn = 1
class Species:
#__init__,relocate, fight, and target methods
for n in range(20):
petri_dish.append(Species(n,0,0,0,0,1))
def reproduce():
class Offspring(Species):
pass
for z in list(petri_dish):
if z.status == 1 and z.life >= 200:
petri_dish.append(Offspring('A'+str(z.name),0,0,0,0,1))
def move_around():
for x in list(petri_dish):
if turn % 2000 == 0:
reproduce()
x.relocate()
x.target()
while len([y for y in petri_dish if y.status == 1]) > 1:
turn += 1
move_around()
for x in [y for y in petri_dish if y.status == 1]:
pprint(vars(x))
print turn
アイデアは、特定のターン数ごとに「最強」のセルを複製することです。問題は、これらのセルが何度もコピーされていることです。コードを数回実行すると、私が言及していることもわかるはずです。
私の疑いは、繰り返し処理しているリストを変更しようとしているか、どこかでリストを誤って参照しているのではないかと考えていますが、問題の場所を特定することはできません。
ありとあらゆる助けをいただければ幸いです。ありがとうございました!