VISTA DEL TEIDE CON LA CABECERA DEL VALLE DE LA OROTAVA Y LA LADERA DE LA ISLA BAJA AL PIE DESDE LOS ALTOS DE SANTA ÚRSULA, NORTE DE TENERIFE. |
1) LISTA.APPEND(ITEM):
Este primer método es uno de los más usados dentro del conjunto de métodos disponibles para las listas en Python. Permite agregar el elemento pasado como argumento del método al final de una lista. Sólo admite un único elemento cada vez:
C156 |
2) LISTA.COUNT(ITEM):
Este método realiza un conteo del número de veces que se repite un ítem concreto en una lista:
C157 |
Por cierto, una pregunta: ¿Qué método realiza una función similar en los conjuntos?... tic-tac, tic-tac, tic-tac,... ¡Ah! Muy bien. Se trata de una pregunta trampa: ninguno, porque los conjuntos, sets, ¿recordamos? no admite elementos repetidos en la colección.
3) LISTA.EXTEND(LISTA):
Con este método podemos conseguir un duplicado de nuestra lista original, la que le pasamos como argumento, repitiendo una vez cada ítem y conservando al tiempo su orden original. Equivale a concatenar una vez nuestra propia lista, lista + lista. Podemos añadir al argumento el operador * y, a continuación, el número de veces que queramos que se repita la lista.
Si usamos como argumento otra lista distinta obtendremos como resultado una concatenación de las mismas. Por supuesto, también se le puede aplicar el operador * tal y como vemos explicado en el párrafo anterior.
Podemos añadir elementos, pero en este caso, Python debe saber que se trata de ítems procedentes de una lista pues, para insertar elementos sueltos, ya contamos con el método lista.append(item). Si no es así, lanzará una excepción.
C158 |
C159 |
4) LISTA.INDEX(ITEM, INICIO, FINAL):
Nos devuelve, como podemos suponer, el índice que corresponde al ítem que le pasamos como argumento la primera vez que lo encuentra, o en el trozo de lista que especifiquemos entre el inicio y el final.
C160 |
5) LISTA.INSERT(ÍNDICE, ITEM):
Resulta este un método de adición ('insert', "insertar, incluir") muy práctico ya que, mientras en el método lista.append(item) el susodicho ítem se coloca siempre al final de la lista, con éste podemos ubicarlo donde queramos señalando el índice, index, que determine su posición.
C161 |
En 1. hemos aprovechado para recordar una alternativa al método lista.append(item) que ya conocemos de nuestro ejemplo de concatenación.
6) LISTA.POP():
Este método devuelve y elimina el ítem que se encuentre más a la derecha de nuestra lista. En cierto modo, es el método opuesto a lista.append(item).
C162 |
Existen métodos que se dicen con EFECTO SECUNDARIO. Son aquéllos que, a parte de realizar la función, digamos, principal para la que han sido diseñados como, por ejemplo, eliminar un ítem, nos informa de cuál ha sido éste.
GEOFORMACIÓN LLAMADA LA CATEDRAL, EN EL PARQUE NACIONAL DE LAS CAÑADAS DEL TEIDE, Y ANTIGUO CENTRO CEREMONIAL ABORIGEN, CENTRO DE TENERIFE. |
7) LISTA.POP(ÍNDICE):
Devuelve y elimina de la lista el ítem señalado por el índice que pasamos como argumento.
C163 |
8) LISTA.REMOVE(ITEM):
Elimina el primer ítem que encuentre en la lista partiendo del extremo izquierdo de la lista.
C164 |
9) LISTA.REVERSE():
Método particular que invierte el orden de los ítems en la lista original.
C165 |
Aprovechamos para introducir una opción menos conocida pero sí muy simple y original para revertir una lista apoyándonos en las técnicas de troceado. Vamos allá:
C166 |
10) LISTA.SORT():
Ordena de menor a mayor los ítems de una lista.
C167 |
Podemos ordenar de mayor a menos aplicando a la nueva lista generada por la aplicación del método lista.sort() el método lista.reverse(), como podemos comprobar en el ejemplo de arriba.
11) LISTA.CLEAR():
Elimina todos los elementos de una lista y devuelve una lista vacía.
C168 |
12) LISTA.COPY():
Este método nos devuelve una copia simple y superficial de la lista a la que se le ha pasado el método. Equivale a lista[:].
C169 |
C170 |
Este método tiene más enjundia de lo que parece a primera vista. Nos explicamos: Imaginemos que tenemos una lista a la que llamamos lista1 con una colección de ítems, por ejemplo, diosas de la mitología clásica, que es lo más normal del mundo (seguro que cualquiera de nosotros tiene por lo menos una en su propia casa), y queremos hacer una copia simple de la lista anterior asignándole como identificarse de la variable en memoria el nombre lista2.
Lo hacemos mediante una sencilla expresión de asignación recurriendo al operador correspondiente. Y así, como se aprecia en 1., obtenemos una copia idéntica de lista1.
Hasta aquí, bien, lo normal. Debemos guardar lista2 tal cual está y seguir operando con lista1 como si ambas fueran listas independientes la una de la otra.
Nos interesa añadir en lista1 un nuevo ítem, por lo cual acudimos al método list.append(item) de adición que ya hemos estudiado, tal y como podemos ver en 2., y sumamos "Hécate" a la lista.
Sin embargo, cuando consultamos nuevamente lista2 tal y como hacemos en 3. comprobamos con estupor mal disimulado de programadores principiantes que dicha adición también ha tenido lugar en la copia, en lista2: esta lista se ha modificado (la mutabilidad, recordémoslo por enésima vez, es una cualidad intrínseca de las listas en Python, y de esos lodos estos barros) independientemente de que nosotros queramos o no.
Con dedos temblorosos tecleamos el código de identidad, 4., y éste nos devuelve True: he aquí la raíz del problema, el meollo de la cuestión. Y es que lista1 y lista2 no sólo son copias entre sí sino que se trata del mismo objeto. Por ello, cualquier modificación en cualquiera de ellas afectará automáticamente a su contraparte: lo que hagamos con el original lo hacemos igualmente con la copia.
Para solventar la situación (si queremos, claro) recurrimos a asignar a lista2 el método lista.copy(), tal y como hacemos en 5., lo que nos devolverá una copia independiente de lista1, como podemos verificar en 6., donde la aplicación del operador de identidad is nos devuelve False.
Si recurrimos de nuevo al método lista.append(item) para adicionar "Hécate" a la colección de datos de lista1, 7., vemos que, efectivamente, se produce la modificación deseada en lista1 pero no así en lista2, tal y como deseábamos, lo que se muestra en 8.
Un resultado similar al anterior podemos obtenerlo asignando a lista2 la función list(lista1), como proponemos en 9. e, incluso, aprovechando la adición más simple de todas, como vemos en 10., a través del operador aritmético de suma +.
gracias tio
ResponderEliminarDe nada. Un placer. Saludos.
Eliminar¡Hola, Gauber! Muy interesante el contenido, y súper claro. Gracias por compartirlo. Saludos.
ResponderEliminarHola, Brenda. Muchísimas gracias por su comentario. Un placer compartir. Saludos.
Eliminar