Czy jesteś matematykiem? Opisywanie prostych rzeczy w zbyt złożony sposób ..;)
ThiefMaster
13
Informatyk. Jestem trochę zdezorientowany, ponieważ w dokumentacji jest napisane „Test x dla członkostwa w s”. Dla mnie to może oznaczać „wystąpienie x jest zawarte w s” lub „istnieje jakaś instancja w s, która ma taką samą wartość jak x”. Nie wiem, czy jest to porównanie tożsamości, czy równości.
Dejas
6
@Dejas: Ponieważ zdajesz sobie sprawę, że Python ma dwa operatory Porównanie równości i porównanie tożsamości, powinieneś być w stanie skonstruować eksperyment, który potwierdzi każdy z nich. Pomogłoby, gdybyś opublikował ten eksperyment.
S.Lott,
Odpowiedzi:
101
Tak, ale oznacza to równieżhash(b) == hash(x) , że równość przedmiotów nie wystarczy, aby były takie same.
Nie jest to zbyt dobry test, ponieważ stałe łańcuchowe są często internowane (spróbuj 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 .
Filip.
11
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
Odpowiedzi:
Tak, ale oznacza to również
hash(b) == hash(x)
, że równość przedmiotów nie wystarczy, aby były takie same.źródło
Zgadza się. Możesz to wypróbować w tłumaczu w następujący sposób:
źródło
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:
Podobnie jak czek:
edited: edytowane w celu uwzględnienia zestawów zamiast list i ciągów
źródło
Ciągi, choć nie są
set
typami, mają cennąin
właściwość podczas walidacji w skryptach:Mam nadzieję, że pomoże ci to lepiej zrozumieć użycie w
in
tym przykładzie.źródło
... 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 ():
źródło