比较两个列表的真假

时间:2013-06-20 06:29:03

标签: python list compare boolean

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

这是默认的玩家广告资源,在整个游戏中都会添加。

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

这是比较两个列表的代码块。我试图使用,但它没有用。

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

如果有人可以帮助我,我会非常感激。我觉得答案恰好在我的标题上,但我无法弄明白。

2 个答案:

答案 0 :(得分: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中的每个元素

答案 1 :(得分: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仍然是列表,这也有效,但设置查找要快得多。)