Sono un po 'confuso riguardo al python in operator per i set.Operatore set "in" Python
Se ho un set in python e qualche istanza b, è vero che "b in s" significa "c'è qualche elemento x in s tale che b == x è vero"?
Sono un po 'confuso riguardo al python in operator per i set.Operatore set "in" Python
Se ho un set in python e qualche istanza b, è vero che "b in s" significa "c'è qualche elemento x in s tale che b == x è vero"?
Sì, ma anche significa hash(b) == hash(x)
, quindi l'uguaglianza degli articoli non è sufficiente per renderli uguali.
Sì. Significa che l'elemento dato è nell'insieme.
Giusto per essere chiari però. per "è nel set" intendi "a == b" e non "a is b", corretto? – Dejas
Proprio così. Si potrebbe provare l'interprete in questo modo:
>>> a_set = set(['a', 'b', 'c'])
>>> 'a' in a_set
True
>>>'d' in a_set
False
Fyi, 'sets' è deprecato. 'set()' è un builtin per un bel po 'di tempo. – ThiefMaster
Oh, certo. Scusate :) Cambio il mio campione ... –
Questo non è un test molto buono poiché le costanti di stringa sono spesso internate (provate 'a = 'a'; b = 'a'; a è b'). L'ho provato con 'a = (1, 2, 3); b = (1, 2, 3); a == b; hash (a) == hash (b); a è b; a invece in set ([b]). – Philipp
stringhe, anche se non sono set
tipi, hanno un valore in
proprietà durante la convalida negli script:
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
Spero che questo aiuta a capire meglio l'uso di in
con questo esempio.
Questo non è un set. Né le stringhe sono mutabili. –
Non so cosa stavo pensando ... hai ragione. – Droogans
'... o 'e' o 'es' o 's''. Prendi in considerazione l'eliminazione di questa risposta inutilmente sbagliata. – Quuxplusone
Sì, può significare così, o può essere un semplice iteratore. Per esempio: Esempio come iteratore:
a=set(['1','2','3'])
for x in a:
print ('This set contains the value ' + x)
Allo stesso modo come un assegno:
a=set('ILovePython')
if 'I' in a:
print ('There is an "I" in here')
Modificato: modificato per includere insiemi piuttosto che liste e stringhe
Cosa c'entra questo con gli insiemi? –
beh suppongo che una lista o anche una stringa possano essere considerate come aventi proprietà simili a un set. Sono una raccolta di elementi. –
No, i set hanno una condizione aggiuntiva per un controllo di contenimento che le sequenze no. –
Sei un matematico? Descrivendo le cose semplici in un modo troppo complesso ..;) – ThiefMaster
Computer Scientist. Sono solo un po 'confuso perché la documentazione dice "Test x per l'appartenenza a s". Per me ciò potrebbe significare "l'istanza x è contenuta in s" o "esiste qualche istanza in s che ha lo stesso valore di x". Non so se si tratti di un'identità o di un confronto di uguaglianza. – Dejas
@Dejas: Dato che sei consapevole del fatto che Python ha due operatori Equality confronto e confronto delle identità, dovresti essere in grado di costruire un esperimento che ne confermi ciascuno. Sarebbe utile se hai postato quell'esperimento. –