Você é matemático? Descrevendo coisas simples de uma forma excessivamente complexa ..;)
ThiefMaster
13
Cientista da computação. Estou um pouco confuso porque a documentação diz "Teste x para associação a s". Para mim, isso poderia significar "a instância x está contida em s" ou "alguma instância existe em s com o mesmo valor que x". Não sei se isso é uma comparação de identidade ou igualdade.
Dejas
6
@ Dejas: Como você está ciente de que o Python possui dois operadores Comparação de igualdade e comparação de identidade, você poderá construir um experimento que confirme cada um. Ajudaria se você postasse essa experiência.
S.Lott
Respostas:
101
Sim, mas também significa hash(b) == hash(x), portanto, a igualdade dos itens não é suficiente para torná-los iguais.
Este não é um teste muito bom, pois as constantes de seqüência de caracteres são frequentemente internadas (try 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]).
Philipp
11
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
bem, suponho que uma lista ou mesmo uma string possa ser considerada como tendo propriedades semelhantes a um conjunto. Eles são uma coleção de elementos.
Arnab Ghosal
1
Não, os conjuntos têm uma condição adicional para uma verificação de contenção que as seqüências não possuem.
Ignacio Vazquez-Abrams
3
As strings, embora não sejam settipos, têm uma inpropriedade 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'returnTruereturnFalse
Espero que isso ajude você a entender melhor o uso indeste exemplo.
Respostas:
Sim, mas também significa
hash(b) == hash(x)
, portanto, a igualdade dos itens não é suficiente para torná-los iguais.fonte
Está certo. Você pode tentar no intérprete assim:
fonte
a = 'a'; b = 'a'; a is b
). Eu tentei com issoa = (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:
Da mesma forma como um cheque:
editado: editado para incluir conjuntos em vez de listas e strings
fonte
As strings, embora não sejam
set
tipos, têm umain
propriedade valiosa durante a validação em scripts:Espero que isso ajude você a entender melhor o uso
in
deste exemplo.fonte
... 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 ():
fonte