0

对于我正在编写的程序,最后我需要比较两个列表。他们不会按顺序排列,但这是棘手的部分。最后,第一个列表可能比第二个列表有更多的项目。但只要第一个列表具有在第二个列表中定义的所需项目,该函数就会返回一个真值。我尝试了设置列表,但这更多的是用于交叉点,这不是我想要的。这是我到目前为止的代码:

这是默认的玩家物品栏,会在整个游戏中添加。

pla_back = ["Combat Knife","Flares","Compass"]

这是比较两个列表的代码块。我尝试使用 in ,但它不起作用。

acceptItem = ["Combat Knife","Flares","Compass","silver bar","a cloth","a stick","some rope"]
    if acceptItem in pla_back:
        placeholder
    else:
        placeholder

如果有人可以帮助我,我将非常感激。我觉得答案就在我的舌尖上,但我就是想不通。

4

2 回答 2

2
if set(pla_back) >= set(acceptItem):
    print 'Player has the required items'
else:
    print "Player doesn't have the required items"

如果我的解释是正确的,你想看看是否pla_back包含acceptItem. 所以它可以有更多,但只要它有每个元素acceptItem都应该返回true。

这里>=的意思是'是超集'

s.issuperset(t)     s >= t      test whether every element in t is in s

所以我们正在检查是否每个元素都acceptItem出现在pla_back

于 2013-06-20T06:59:45.333 回答
1

你应该做acceptItem一组。然后你可以做

>>> acceptItem = {"Combat Knife","Flares","Compass","silver bar","a cloth","a stick","some rope"}
>>> pla_back = ["Combat Knife","Flares","Compass"]
>>> all(item in acceptItem for item in pla_back)
True

(如果仍然是列表,这也有效acceptItem,但设置查找要快得多)。

于 2013-06-20T06:56:56.463 回答