gpt4 book ai didi

python - 如何从列表中的列表中删除对象?

转载 作者:行者123 更新时间:2023-11-28 21:09:02 25 4
gpt4 key购买 nike

假设有三个列表,第三个是包含前两个的列表:

Friendly_List = list()
Enemy_List = list()
Battle_Space = list([Friendly_List, Enemy_List])

还有一个妖精类:

class Goblin(object):
def __init__(self):
self.Name = "Goblin"
self.HP = random.randint(15,20)
self.Damage = random.randint(5,10)

我创建了一个 Goblin 类的实例:

x = Goblin()

然后放入Friendly_List:

Friendly_List.append(x)

现在假设哥布林英勇牺牲并且必须从战场上移除。如果我执行 Friendly_List.remove(x),妖精将毫无问题地移除。

如果我执行 Battle_Space.remove(x),它会说 x 不在列表中 - 即使 x 在属于 Battle_Space 列表的列表之一中。

我想我真正想问的是:实现 Battle_Space.remove(x) 所需行为的正确方法是什么?要删除一个深层的实例?

最佳答案

简单但可能不太干净的方法是 Battle_Space[0].remove(x)。您必须确保第一个列表是友好列表。

我的可读性建议是考虑将 friendly_listenemy_list 放在 BattleSpace 对象中,这样您就可以通过名称引用它们。您还可以在该对象中创建一个方法以从任何子列表中删除目标:

class BattleSpace(object):
def __init__(self):
self.friendly_list = []
self.enemy_list = []

def remove(self, target):
if target in self.friendly_list:
self.friendly_list.remove(target)
if target in self.enemy_list:
self.enemy_list.remove(target)


battle_space = BattleSpace()
battle_space.friendly_list.append(x)
battle_space.remove(x) # can also do battle_space.friendly_list.remove(x)

编辑:只需阅读 OP 的评论,即希望删除列表中的任何位置。修改后的代码。

关于python - 如何从列表中的列表中删除对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38922291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com