对于我写的程序,我最后有两个列表需要比较。他们不会有秩序,但这是棘手的部分。最后,第一个列表可能包含的项目多于第二个列表。但只要第一个列表具有在第二个列表中定义的必需项,该函数将返回一个真值。我尝试过设置列表,但这对交叉点来说更多,这不是我想要的。这是我到目前为止的代码:
这是默认的玩家广告资源,在整个游戏中都会添加。
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
如果有人可以帮助我,我会非常感激。我觉得答案恰好在我的标题上,但我无法弄明白。
答案 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
仍然是列表,这也有效,但设置查找要快得多。)