检查列表中的多个项目

时间:2014-05-16 23:58:41

标签: list python-3.x pygame

我有一个字符串列表,我正在尝试检查此列表中的所有元素是否都在另一个列表中。我知道有一种方法可以通过单独询问列表中的每个元素是否在第二个列表中来实现,但似乎应该有一种更好的方法来对代码进行流线化。我正在使用Python 3和pygame。

代码:

 self.loot=[] #keep track of what each player has gotten
 self.pieces=["necklace", "ring", "bracelet", "earring", "crown"]#possible jewelry

然后在整个游戏中将碎片添加到战利品清单中。我可以通过...来做到这一点。

  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)

谢谢!

1 个答案:

答案 0 :(得分:1)

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

required = set(['ring','erring','etc'])
have = set(loot)
if not (required - have):
   ....

我们的想法是-会移除requiredhave内的所有内容。如果结果为空,那么你拥有一切。

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

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

这将遍历required并检查每个req是否在loot中。如果每个结果都是True,则会返回True