web-dev-qa-db-fra.com

Contient HashSet <Integer> in Python

Dans Java nous avons HashSet<Integer>, J'ai besoin d'une structure similaire dans Python pour utiliser contient comme ci-dessous:

A = [1, 2, 3]
S = set()
S.add(2)
for x in A:
    if S.contains(x):
        print "Example"

S'il te plait peux-tu aider?

33
Borys Stepov

Il suffit d'utiliser un ensemble:

>>> l = set()
>>> l.add(1)
>>> l.add(2)
>>> 1 in l
True
>>> 34 in l
False

Le même fonctionne pour les listes:

>>> ll = [1,2,3]
>>> 2 in ll
True
>>> 23 in ll
False

Edit: Remarquez le commentaire de @ bholagabbar selon lequel la complexité temporelle de in vérifie les listes et les tuples est O(n) en moyenne (voir le python docs ici ), alors que pour les ensembles, il est en moyenne O(1) = (pire des cas aussi O (n), mais est très rare et ne peut se produire que si __hash__ est mal implémenté).

46
tttthomasssss