Operadores de pertenencia
Los operadores de pertenencia son palabras reservadas en Python para evaluar la presencia de un valor o variable dentro de una secuencia. Se usan como operadores de pertenencia las palabras IN y NOT IN.
Como se puede deducir el resultado booleano del operador IN es TRUE si se evalúa la presencia de un valor dentro de una secuencia que efectivamente si la contiene, caso contrario devuelve FALSE. Mientras que el resultado booleano del operador NOT IN es TRUE en el caso que se evaúe la presencia de un valor dentro de una secuencia que no contiene dicho valor y caso contrario, es decir, que si la contenga, devuelve FALSE.
Para ejemplificar mejor el uso de los operadores de pertenencia IN y NOT IN vamos a introducir un nuevo tipo de variable llamado lista. Las variables tipo lista son contenedores de diferentes elementos separados por coma, es importante destacar que dentro de una misma lista los elementos que la conforman pueden ser de diferentes tipos y pueden variar en el tiempo, por lo tanto en Python las listas son heterogéneas y mutables.
Aunque ahondaremos mas adelante sobre el uso de las variables tipo lista, veamos ahora un ejemplo sencillo y rápido del uso de una variabe tipo lista:
El código anterior almacena en una variable tipo lista las cadenas de caracteres "César", "Gamboa", el valor entero 49, y el valor decimal 1.7. Cada valor en una "casilla" separada dentro de la misma variable. En términos de programación esto se conoce como un vector, o sea un arreglo de una sola dimensión, en base de datos se podría comparar a lo que seria un registro que contiene 4 campos, por ejemplo nombre, apellidom, edad y estatura.
Luego de almacenados los datos dentro de la variable lDatosPersonales la función Print() muestra por pantalla l valor de todas las "casillas" de la variable. Dando el siguiente resultado:
['César', 'Gamboa', 49, 1.7]
Nota importante: el primer caracter del nombre de la variable es la letra L en minúscula "l" , (no confundir con el símbolo del número uno "1"). Eso por que como ya se dijo anteriormente en el apartado de variables, Python no admite que los nombres de las variables empiecen por un número ni contengan espacios. El uso de la letra L en minúscula para nombrar esta variable del tipo lista responde a la vieja costumbre de darle como primer caracter al nombre de la variable el tipo de dato que contiene (notación húngara). En este caso por ser una lista lista lleva la letra L minúscula "l" (probablemente sea mejor usar los caracteres "lst" o directamente la palabra Lista quedando la variable asi: ListaDatosPersonales). En todo caso queda a libre elección del programador, lo que es importante es recordar que NO se trata del símbolo del numero uno "1". En la Wikipedia puede ver mas sobre la notación húngara y su inventor Charles Simonyi haciendo click aquí.
Ahora si deseamos averiguar si un valor se encuentra dentro de la variable consideremos el siguiente ejemplo:
El código anterior al ejecutarse da como resultado:
Contenido de la lista lDatosPersonales: ('César', 'Gamboa', 49, 1.7)
La instrucción "Gamboa" in lDatosPersonales devuelve: True
La instrucción 49 in lDatosPersonales devuelve: True
La instrucción "Cesar" in lDatosPersonales devuelve: False
El resultado False en la última evaluación del operador IN se debe a que se solicitó deliberadamente la búsqueda de la cadena "Cesar" en lugar de la cadena "César" que efectivamente si pertenece al objeto lDatosPersonales como veremos a continuación:
Devuelve:
La instrucción "César" in lDatosPersonales devuelve: True
Como mencionamos anteriormente para evaluar el caso contrario, es decir si un objeto no pertenece a una lista lo podemos realizar con la instrucción NOT IN de la siguiente manera:
En este caso, como la cadena de caracteres "Gabriel" no pertenece a la lista lDatosPersonales, la evaluación NOT IN devolverá el valor booleano TRUE. El código anterior devuelve:
La instrucción 'Gabriel' not in lDatosPersonalesdevuelve: True
Caso contrario si evaluamos la no pertenencia (NOT IN) de un valor dentro de un objeto que efectivamente si se enciuentra el resultado sería un valor booleano FALSE. Consideremos el siguiente ejemplo:
El código anterior da como resultado:
La instrucción "Gabriel" not in lDatosPersonalesdevuelve: True
Nota: Como se pudo observar se ha usado indiferentemente comillas simples y dobles para delimitar cadenas de texto ya que se pueden utilizar ambos símbolos, sin embargo la única restricción es que se debe usar el mismo tipo de comillas para abrir y cerrar una cadena de caracteres, ya sea comillas simple (') o doble (").
En informática los caracteres acentuados son diferentes a los no acentuados, sin importar si es la misma letra. Igualmente pasa con los caracteres en mayúsculas y minúsculas, por ejemplo el caracter 'a' es diferente al caracter 'A', con lo cual una cadena de caracteres que difiera en una letra porque esté en minúscula o mayúscula podría generar una interpretación errada del resultado del uso del operador de pertenencia IN. Para solventar esta situación una posibilidad es el uso de las funciones incorporadas en Python UPPER() o LOWER(), de esta manera se compararían las cadenas en igualdad de condiciones, o ambas en minúsculas en todos sus elementos o ambas en mayúsculas en todos sus elementos. Veamos el siguiente ejemplo:
Resultado ingresando cArLoS
Lista de nombres:
Juan, Alicia, José, Ninoska, César, Luis, Carlos, María
Escriba un nombre de la lista,
no importa si es en mayúsculas o minúsculas: cArLoS
cArLoS
cArLoS está en la lista
Como podemos ver en el ejemplo, no importa si el usuario ingresa mayúsculas o minúsculas ya que se convierte la cadena entera ingresada a minúsculas y se verifica si se encuentra en una cadena que previamente se ha escrito toda en minúscula a los efectos de equiparar las condiciones de comparación. El resultado ingresando por ejemplo la cadena "cArLos" con mayúsculas y minúsculas intercaladas igualmente funciona ya que se igualan todos los carácteres a minúsculas al hacer la comparación.
Comentarios
Publicar un comentario