Listas y tuplas. Operadores
Colecciones de datos
Los operadores son, como ya sabemos, componentes de todo lenguaje de programación que permiten manipular los datos referenciados en las variables de diferentes maneras, según el tipo de dato y de operador de que se trate. También las colecciones de datos admiten la acción de operadores. Las listas y las tuplas comparten los mismos.
Los operadores disponibles en listas y tuplas son los siguientes:
- : Permite obtener segmentos del contenido de ambas colecciones.
- + y * Permiten realizar las operaciones sobre listas y tuplas. Veremos cuáles.
- in / not in Permiten verificar la presencia / no presencia de determinado dato dentro del conjunto.
- Los operadores relacionales <, <=, >, >= y !=, cuyas funciones describiremos en su momento.
Aunque figure en primer lugar, no trataré el operador : en esta entrada, dada la relación que mantiene con el acceso a los datos. Por este motivo desplazo su análisis a la entrada correspondiente.
Inicio este análisis con los operadores + y *, los cuales cumplen funciones específicas con listas y tuplas, diferentes de las que permiten ejecutar en variables.
- El operador + permite la unión o concatenación de los elementos de varias listas. Como cabe suponer por lo que sabemos de los operaciones aritméticos, nos permiten realizar operaciones de suma y multiplicación con listas y tuplas.
lista1 = list([1,2,3,4])
lista2 = list([5,6,7,8])
print(lista1 + lista2)
-> devuelve [1,2,3,4,5,6,7,8]
- Este mismo operador, aplicado a tuplas funciona exactamente igual, aunque lógicamente devuelve una tupla
(1,2,3,4,5,6,7,8) - La operación * tiene como efecto la repetición de la lista o la tupla sujeta a tal operación, siendo indiferente que el operador se sitúe antes o después de la lista o tupla. Así que
print(3 * lista1)devuelve[1,2,3,4,1,2,3,4,1,2,3,4]yprint(tupla1 * 2)devuelve(1,2,3,4,1,2,3,4). En ambos casos el número debe ser entero (ni3.1ni2.4se admiten como "multiplicadores") - Ambos operadores tienen el mismo efecto con independencia de la naturaleza de los elementos de la lista o de la tupla.
- En ambos casos no está permitido el trabajo con listas y tuplas simultáneamente. No es posible ni lista + tupla, ni tupla * lista, ni ninguna otra combinación o permutación de elementos.
- Los operadores in / not in permiten identificar si un dato forma parte o no de una lista o de una tupla. Ambos devuelven
TrueoFalsesegún el resultado de la operación. Ejemplos paralista1ytupla1anteriores:
print(5 in lista1) #devuelve False
print(1 in lista1) #devuelve False
print(5 not in lista1) #devuelve True
print(1 not in lista1) #devuelve True
print(5 in tupla1) #devuelve False
print(1 in tupla1) #devuelve False
print(5 not in tupla1) #devuelve True
print(1 not in tupla1) #devuelve True
Los operadores relacionales permiten comparar dos listas entre sí, elemento a elemento y según criterios específicos en función del tipo de elemento. También devuelven True o False, según el resultado de la comparación. Veamos algunas comparaciones, tomando como referencia las listas y las tuplas creadas antes. Dada la multiplicidad de opciones me limitaré a unos pocos ejemplos, aunque los resultados se pueden hacer extensibles al resto de los operadores:
#Operadores relacionales con listas
print(lista1 == lista1) #Devuelve True
print(lista1 != lista2) #Devuelve True
#Operadores relacionales con tuplas
print(tupla1 == tupla1) #Devuelve True
print(tupla1 != tupla2) #Devuelve True
#Operadores relacionales con listas y tuplas
print('Operadores relacionales con listas y tuplas')
print(lista1 == tupla1) #Devuelve False por ser una lista y la otra tupla, aunque el contenido es el mismo