擅长:python、mysql、java
<p>给螺栓一个“健康”,初始化为1。然后你可以做一个嵌套循环来计算所有的伤害,两个独立的不受尊重的“循环”来移除所有的“死亡”。但是,不要这样做,因为你仍然不想修改你正在循环的列表。复制仍然太复杂。您真正想做的是直接构建一个新的列表,其中只包含仍然“活动”的东西,您可以用列表理解(或者如图所示,用<code>filter</code>)描述地完成这项工作。</p>
<pre><code># for example
class Alien:
# ... other stuff
def damage(self): self.hp -= 1
def alive(self): return self.hp > 0
# similarly for Bolt
def collide(an_alien, a_bolt):
# etc.
def handle_collisions(aliens, bolts):
for a in aliens:
for b in bolts:
if collide(a, b):
a.damage()
b.damage()
return list(filter(Alien.alive, aliens)), list(filter(Bolt.alive, bolts))
</code></pre>