List 检查列表中的多个项目

List 检查列表中的多个项目,list,python-3.x,pygame,List,Python 3.x,Pygame,我有一个字符串列表,正在尝试检查此列表中的所有元素是否都在另一个列表中。我知道有一种方法可以做到这一点,即单独询问列表中的每个元素是否在第二个列表中,但似乎应该有一种更好的方法将代码流化。我正在使用Python 3和pygame 代码: 然后在整个游戏中,棋子被添加到战利品列表中。我可以通过 if "crown" in self.loot : if "bracelet" in self.loot : if "necklace" in self.loot

我有一个字符串列表,正在尝试检查此列表中的所有元素是否都在另一个列表中。我知道有一种方法可以做到这一点,即单独询问列表中的每个元素是否在第二个列表中,但似乎应该有一种更好的方法将代码流化。我正在使用Python 3和pygame

代码:

然后在整个游戏中,棋子被添加到战利品列表中。我可以通过

  if "crown" in self.loot :
        if "bracelet" in self.loot :
            if "necklace" in self.loot :
                if "earring" in self.loot :
                    if "ring" in self.loot :
                        if "black ring" not in self.loot :
                            end_message = gmaes.Message(value = self.name "is the Prettiest Princess",
                                                        size= 75,
                                                        color = color.pink,
                                                        x = games.screen.width/2,
                                                        y = games.screen.height/2,
                                                        lifetime = 5* games.screen.fps,
                                                        after_death = games.screen.quit)
                            games.screen.add(end_message)

谢谢

我建议您使用更合适的数据结构,即
set

required = set(['ring','erring','etc'])
have = set(loot)
if not (required - have):
   ....
想法是
-
将从
所需的
中删除
have
中的所有内容。如果结果为空,则表示您拥有所有内容

或者,您可以执行以下操作:

if all(req in loot for req in required):
    ....
这将遍历所需的
required
,并检查每个
req
是否在
loot
中。如果每个结果都是
True
,它将返回
True

if all(req in loot for req in required):
    ....