¿Eres matemático? Describiendo cosas simples de una manera demasiado compleja ...;)
ThiefMaster
13
Científico de la computación. Estoy un poco confundido porque la documentación dice "Prueba x para membresía en s". Para mí eso podría significar "la instancia x está contenida en s" o "existe alguna instancia en s que tiene el mismo valor que x". No sé si se trata de una comparación de identidad o igualdad.
Dejas
66
@Dejas: Como sabe que Python tiene dos operadores de comparación de igualdad y comparación de identidad, debería poder construir un experimento que confirme cada uno. Sería útil si publicaras ese experimento.
S.Lott
Respuestas:
101
Sí, pero también significa hash(b) == hash(x)que la igualdad de los elementos no es suficiente para hacerlos iguales.
Esta no es una prueba muy buena ya que las constantes de cadena a menudo se internan (intente a = 'a'; b = 'a'; a is b). Lo intenté con en su a = (1, 2, 3); b = (1, 2, 3); a == b; hash(a) == hash(b); a is b; a in set([b])lugar.
Philipp
11
Sí, puede significar eso, o puede ser un simple iterador. Por ejemplo: Ejemplo como iterador:
a=set(['1','2','3'])for x in a:print('This set contains the value '+ x)
Del mismo modo como un cheque:
a=set('ILovePython')if'I'in a:print('There is an "I" in here')
editado: editado para incluir conjuntos en lugar de listas y cadenas
Respuestas:
Sí, pero también significa
hash(b) == hash(x)
que la igualdad de los elementos no es suficiente para hacerlos iguales.fuente
Así es. Podrías probarlo en el intérprete así:
fuente
a = 'a'; b = 'a'; a is b
). Lo intenté con en sua = (1, 2, 3); b = (1, 2, 3); a == b; hash(a) == hash(b); a is b; a in set([b])
lugar.Sí, puede significar eso, o puede ser un simple iterador. Por ejemplo: Ejemplo como iterador:
Del mismo modo como un cheque:
editado: editado para incluir conjuntos en lugar de listas y cadenas
fuente
Las cadenas, aunque no son
set
tipos, tienen unain
propiedad valiosa durante la validación en los scripts:Espero que esto te ayude a comprender mejor el uso de
in
este ejemplo.fuente
... or 'e' or 'es' or 's'
. Considere simplemente eliminar esta respuesta inútilmente incorrecta.Los conjuntos se comportan de manera diferente a los dictados, debe usar operaciones de conjunto como issubset ():
fuente