在Java中我们有HashSet<Integer>
,我需要在Python中使用类似的结构,如下所示:
A = [1, 2, 3]
S = set()
S.add(2)
for x in A:
if S.contains(x):
print "Example"
你能帮忙吗?
答案 0 :(得分:44)
只需使用一套:
>>> l = set()
>>> l.add(1)
>>> l.add(2)
>>> 1 in l
True
>>> 34 in l
False
列表同样适用:
>>> ll = [1,2,3]
>>> 2 in ll
True
>>> 23 in ll
False
修改强>
请注意@ bholagabbar在下面的评论,in
检查列表和元组的时间复杂度平均为O(n)(参见python docs here),而对于集合,它是平均值O(1)(最坏的情况也是O(n),但非常罕见,只有在__hash__
实施不当时才会发生。)
答案 1 :(得分:1)
在Python中,有一个内置类型set
。
与Java中的hashmap
的主要区别是未键入Python set
,
也就是说,在Python中拥有一组{'2', 2}
是合法的。
开箱即用,类set
没有实现contains()
方法。
我们通常使用Python关键字in
完成您想要的操作,即
A = [1, 2, 3]
S = set()
S.add(2)
for x in A:
if x in S:
print("Example")
如果这对您不起作用,则可以调用特殊方法__contains__()
,但不建议这样做。
A = [1, 2, 3]
S = set()
S.add(2)
for x in A:
if S.__contains__(x):
print("Example")