Modificar con troceado
No sólo es posible modificar un elemento de cada vez, sino que podemos asignar valores a trozos de una lista:
Borrar elementos
Python nos ofrece, al menos, cuatro formas para borrar elementos en una lista:
Por su índice: Mediante la función del():
Por su valor: Mediante la función remove():
Por su índice (con extracción): Las dos funciones anteriores del() y remove() efectivamente borran el elemento indicado de la lista, pero no «devuelven» nada. Sin embargo, Python nos ofrece la función pop() que además de borrar, nos «recupera» el elemento; algo así como una extracción. Lo podemos ver como una combinación de acceso + borrado:
Nota: Si usamos la función pop() sin pasarle ningún argumento, por defecto usará el índice -1, es decir, el último elemento de la lista. Pero también podemos indicarle el índice del elemento a extraer.
Por su rango: Mediante troceado de listas:
Borrado completo de la lista
Python nos ofrece, al menos, dos formas para borrar una lista por completo:
1. Utilizando la función clear():
2. «Reinicializando» la lista a vacío con []:
Nivel avanzado
La diferencia entre ambos métodos tiene que ver con cuestiones internas de gestión de memoria y de rendimiento:
Encontrar un elemento
Si queremos descubrir el índice que corresponde a un determinado valor dentro la lista podemos usar la función index() para ello:
Tener en cuenta que si el elemento que buscamos no está en la lista, obtendremos un error:
Pertenencia de un elemento
Si queremos comprobar la existencia de un determinado elemento en una lista, podríamos buscar su índice, pero la forma pitónica de hacerlo es utilizar el operador in:
Determine si una cadena de texto dada es un isograma, es decir, no se repite ninguna letra. Ejemplos válidos de isogramas:
- lumberjacks
- background
- downstream
- six-year-old
Número de ocurrencias
Para contar cuántas veces aparece un determinado valor dentro de una lista podemos usar la función count():
Convertir lista a cadena de texto
Dada una lista, podemos convetirla a una cadena de texto, uniendo todos sus elementos mediante algún separador. Para ello hacemos uso de la función join() con la siguiente estructura:
Figura 1: Estructura de llamada a la función join()
Hay que tener en cuenta que join() sólo funciona si todos sus elementos son cadenas de texto:
Truco: Esta función join() es realmente la opuesta a la de split() para dividir una cadena.
Ejercicio
Consiga la siguiente transformación: 12/31/20 – 31-12-2020
Ordenar una lista
Python proporciona, al menos, dos formas de ordenar los elementos de una lista:
Conservando lista original: Mediante la función sorted() que devuelve una nueva lista ordenada:
Modificando la lista original: Mediante la función sort():
Ambos métodos admiten un parámetro «booleano» reverse para indicar si queremos que la ordenación se haga en sentido inverso:
Longitud de una lista
Podemos conocer el número de elementos que tiene una lista con la función len():
Iterar sobre una lista
Al igual que hemos visto con las cadenas de texto, también podemos iterar sobre los elementos de una lista utilizando la sentencia for:
Nota: También es posible usar la sentencia break en este tipo de bucles para abortar su ejecución en algún momento que nos interese.
Iterar usando enumeración
Hay veces que no sólo nos interesa «visitar» cada uno de los elementos de una lista, sino que también queremos saber su índice dentro de la misma. Para ello Python nos ofrece la función enumerate():
Ejecución paso a paso a través de Python Tutor:
Iterar sobre múltiples listas
Python ofrece la posibilidad de iterar sobre múltiples listas en paralelo utilizando la función zip():
Ejecución paso a paso a través de Python Tutor:
Dado que zip() produce un iterador, si queremos obtener una lista explícita con la combinación en paralelo de las listas, debemos construir dicha lista de la siguiente manera:
Ejercicio
Dados dos vectores (listas) de la misma dimensión, utilice la función zip() para calcular su producto escalar.
Ejemplo
- Entrada:
- Salida: 101