Sono un po 'confuso riguardo inall'operatore python per i set.
Se ho un set se qualche istanza b, è vero che b in ssignifica " c'è qualche elemento xin stale che b == xètrue "?
Sono un po 'confuso riguardo inall'operatore python per i set.
Se ho un set se qualche istanza b, è vero che b in ssignifica " c'è qualche elemento xin stale che b == xètrue "?
Risposte:
Sì, ma significa anchehash(b) == hash(x) , quindi l'uguaglianza degli oggetti non è sufficiente per renderli uguali.
Giusto. Potresti provarlo nell'interprete in questo modo:
>>> a_set = set(['a', 'b', 'c'])
>>> 'a' in a_set
True
>>>'d' in a_set
False
a = 'a'; b = 'a'; a is b). L'ho provato con a = (1, 2, 3); b = (1, 2, 3); a == b; hash(a) == hash(b); a is b; a in set([b])invece.
Sì, può significare così, oppure può essere un semplice iteratore. Ad 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 controllo:
a=set('ILovePython')
if 'I' in a:
print ('There is an "I" in here')
modificato: modificato per includere set anziché elenchi e stringhe
Le stringhe, sebbene non siano settipi, hanno una inproprietà preziosa 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 ti aiuti a capire meglio l'uso di inquesto esempio.
... or 'e' or 'es' or 's'. Considera solo di eliminare questa risposta inutilmente sbagliata.
Gli insiemi si comportano in modo diverso rispetto ai dicts, devi usare operazioni come 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