2
s = set([1,2,3])

我可以这样做:

1 in s

#=> True

我想知道不使用循环,有没有办法做类似的事情:

1,2 in s

#=>True
4

3 回答 3

7

您可以使用设置交集:

>>> s = {1, 2, 3}
>>> t = {1, 2}
>>> s & t == t
True

当然,这仍然有一个内部循环。

正如 spicavigo 指出的那样,您可以使用issuperset,或者更简洁地说,您可以使用>=等效的:

>>> s >= t
True

同样,它在内部仍然有一个循环,但您可能无法做到比这更好。

有关集合操作的更多信息,请参阅文档

如果您只在程序启动一次并存储它时创建您的集合{1, 2},而不是每次进行测试时都重新创建它,您可以进一步提高性能。

于 2012-10-12T07:58:14.417 回答
5

虽然 Mark Byers 给出了我认为的最佳解决方案,但值得注意的是,可以使用all()内置函数为其他集合(不仅仅是集合)提供更通用的解决方案:

all(item in s for item in {1, 2})

显然,内部存在循环,但任何解决方案都是如此。

于 2012-10-12T07:59:54.120 回答
3
a = {1, 2, 3}
if a.issuperset({1, 2}):
    print "Found"
else:
    print "Not Found"
于 2012-10-12T07:59:49.820 回答