Jestem trochę zdezorientowany co do inoperatora Pythona dla zestawów.
Jeśli mam zestaw si jakąś instancję b, czy to prawda, że b in soznacza to „czy jest jakiś element xw stakim, który b == xjesttrue ”?
Jestem trochę zdezorientowany co do inoperatora Pythona dla zestawów.
Jeśli mam zestaw si jakąś instancję b, czy to prawda, że b in soznacza to „czy jest jakiś element xw stakim, który b == xjesttrue ”?
Odpowiedzi:
Tak, ale oznacza to równieżhash(b) == hash(x) , że równość przedmiotów nie wystarczy, aby były takie same.
Zgadza się. Możesz to wypróbować w tłumaczu w następujący sposób:
>>> a_set = set(['a', 'b', 'c'])
>>> 'a' in a_set
True
>>>'d' in a_set
False
a = 'a'; b = 'a'; a is b). a = (1, 2, 3); b = (1, 2, 3); a == b; hash(a) == hash(b); a is b; a in set([b])Zamiast tego spróbowałem .
Tak, może to oznaczać, lub może to być prosty iterator. Na przykład: Przykład jako iterator:
a=set(['1','2','3'])
for x in a:
print ('This set contains the value ' + x)
Podobnie jak czek:
a=set('ILovePython')
if 'I' in a:
print ('There is an "I" in here')
edited: edytowane w celu uwzględnienia zestawów zamiast list i ciągów
Ciągi, choć nie są settypami, mają cenną inwłaściwość podczas walidacji w skryptach:
yn = input("Are you sure you want to do this? ")
if yn in "yes":
#accepts 'y' OR 'e' OR 's' OR 'ye' OR 'es' OR 'yes'
return True
return False
Mam nadzieję, że pomoże ci to lepiej zrozumieć użycie w intym przykładzie.
... or 'e' or 'es' or 's'. Rozważ po prostu usunięcie tej bezsensownie błędnej odpowiedzi.
Zestawy zachowują się inaczej niż dicts, musisz użyć operacji set, takich jak issubset ():
>>> k
{'ip': '123.123.123.123', 'pw': 'test1234', 'port': 1234, 'debug': True}
>>> set('ip,port,pw'.split(',')).issubset(set(k.keys()))
True
>>> set('ip,port,pw'.split(',')) in set(k.keys())
False