s = set([1,2,3])
我可以这样做:
1 in s
#=> True
我想知道不使用循环,有没有办法做类似的事情:
1,2 in s
#=>True
您可以使用设置交集:
>>> s = {1, 2, 3}
>>> t = {1, 2}
>>> s & t == t
True
当然,这仍然有一个内部循环。
正如 spicavigo 指出的那样,您可以使用issuperset
,或者更简洁地说,您可以使用>=
等效的:
>>> s >= t
True
同样,它在内部仍然有一个循环,但您可能无法做到比这更好。
有关集合操作的更多信息,请参阅文档。
如果您只在程序启动一次并存储它时创建您的集合{1, 2}
,而不是每次进行测试时都重新创建它,您可以进一步提高性能。
虽然 Mark Byers 给出了我认为的最佳解决方案,但值得注意的是,可以使用all()
内置函数为其他集合(不仅仅是集合)提供更通用的解决方案:
all(item in s for item in {1, 2})
显然,内部存在循环,但任何解决方案都是如此。
a = {1, 2, 3}
if a.issuperset({1, 2}):
print "Found"
else:
print "Not Found"