Estou um pouco confuso sobre o in
operador python para conjuntos.
Se eu tenho um conjunto s
e alguma instância b
, é verdade que b in s
significa " existe algum elemento x
no s
que b == x
étrue
"?
Estou um pouco confuso sobre o in
operador python para conjuntos.
Se eu tenho um conjunto s
e alguma instância b
, é verdade que b in s
significa " existe algum elemento x
no s
que b == x
étrue
"?
Respostas:
Sim, mas também significa hash(b) == hash(x)
, portanto, a igualdade dos itens não é suficiente para torná-los iguais.
Está certo. Você pode tentar no intérprete assim:
>>> a_set = set(['a', 'b', 'c'])
>>> 'a' in a_set
True
>>>'d' in a_set
False
a = 'a'; b = 'a'; a is b
). Eu tentei com isso a = (1, 2, 3); b = (1, 2, 3); a == b; hash(a) == hash(b); a is b; a in set([b])
.
Sim, pode significar isso ou pode ser um iterador simples. Por exemplo: Exemplo como iterador:
a=set(['1','2','3'])
for x in a:
print ('This set contains the value ' + x)
Da mesma forma como um cheque:
a=set('ILovePython')
if 'I' in a:
print ('There is an "I" in here')
editado: editado para incluir conjuntos em vez de listas e strings
As strings, embora não sejam set
tipos, têm uma in
propriedade valiosa durante a validação em scripts:
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
Espero que isso ajude você a entender melhor o uso in
deste exemplo.
... or 'e' or 'es' or 's'
. Considere apenas excluir essa resposta inutilmente errada.
Os conjuntos se comportam de maneira diferente dos dict, você precisa usar operações de conjunto como 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