Listas (list)

En Python las listas son colecciones de datos rodeadas por corchetes y delimitadas por comas. A cada uno de estos datos se les llama elemento o item. Un ejemplo de lista sería esta:

>>> animal = [ ‘oso’ , ‘lobo’ , ‘león’ ]

Las colecciones de datos pueden ser del tipo numérico, cadena, valores verdadero o falso u otras listas.

Ejemplo de una lista numérica:

>>> numeros = [ 1 , 2 , 3 , 4 , 5 ]

Ejemplo de una lista de texto:

>>> nombres = [ ‘Jose’ ,  ‘Fernando’ ,  ‘Javier’ ]

A diferencia de otros lenguajes donde las listas solo pueden ser de un tipo, en Python una lista puede contener valores de cualquier tipo, con lo que podríamos encontrar una lista como la siguiente:

>>> varios = [ 1 , ’dos’ , 3 , ’cuatro’ , [ 5 , ’cinco’ ] , True ]

También se puede crear una lista vacía de cualquiera de estas dos formas:

>>> lista = list()
>>> lista = []

Para acceder a cualquier elemento de una lista usamos su nombre y el índice colocado en la parte derecha entre corchetes, el índice es un número entero que indica la posición del elemento en la lista comenzando por cero, es decir, el primer elemento en la lista animal es animal[0], el segundo es animal[1] y así hasta animal[último – 1]. Al usar números negativos como índice se accede desde el final, es decir, animal[-1] es el último elemento, animal[-2] es el penúltimo, etc.

Si se intenta acceder a un elemento que no está en la lista se producirá una excepción del tipo IndexError.

Ejemplo:

>>> animal = [ ‘oso’ , ‘lobo’ , ‘león’ ]
>>> print(animal[0])
oso
>>> print(animal[-1])
león
 >>> print(animal[3])
IndexError: Indice de la lista fuera de rango

Se puede cambiar el orden de los elementos de una lista o resignarlos, por eso se dice que son mutables, en el ejemplo anterior puedes cambiar el valor de un elemento asignando otro valor al lugar de la lista a la que apunta el índice, de la siguiente manera:

>>> animal[1] = ‘tigre’

O también se puede ordenar con la función sort().

>>> animal.sort()
>>> print( animal )
[ ‘lobo’ , ‘oso’ , ‘tigre’ ]

O ordenar la lista con orden descendente:

>>> animal.sort( reverse = True )
>>> print( animal )
[ ‘tigre’ , ‘oso’ , ‘lobo’ ]

En cualquier caso, se puede observar que los elementos han cambiado de posición.

Se puede usar el operador de suma (+) para concatenar listas, por ejemplo una lista con a,e,i y otra con o, u , si se suman las listas con + el resultado será una tercera lista con la suma de las primeras.

>>> vocalesaei = [ ‘a’ , ‘e’, ‘i’ ]
>>> vocalesou = [ ‘o’ , ‘u’ ]
>>> vocales = vocalesaei + vocalesou
>>> print(vocales)
[‘a’,’e’,’i’,’o’,’u’]

También es posible usar el operador de multiplicación para obtener un resultado que sea x veces la lista, por ejemplo para una lista con los elementos [1,2,3],  si se multiplica la lista por 2, el resultado será 1,2,3,1,2,3

>>> numeros = [ 1 , 2 , 3 ]
>>> print( numeros * 2 )
[1,2,3,1,2,3]

Se pueden recorrer los elementos de la lista de varias formas, lo mas común es usar un bucle for in para que devuelva cada elemento de la lista.

>>> razasPerros = [ ‘Afgano’ , ‘Akita’ , ‘Basset Hound’, ‘Maltés’ ]
>>> for razaPerro in razasPerros:
>>>          print(razaPerro)

Pero también se puede usar el índice para obtener el valor y si fuera necesario cambiar alguno de los elementos de la lista, en el siguiente ejemplo se usará la función range() para obtener los índices para moverse por la lista. Usando range() se obtienen valores desde 0 hasta un valor inferior al pasado como argumento, por tanto en el siguiente ejemplo obtiene valores desde 0 hasta alcanzar el número de elementos de la lista menos uno que es justo lo que se necesita.

>>> razasPerros = [ ‘Afgano’ , ‘Akita’ , ‘Basset Hound’, ‘Maltés’ ]
>>> for indice in range(len(razasPerros)):
>>>          print(razasPerros[indice])
Afgano
Akita
Basset Hound
Maltés

Y para modificar los valores de la lista se puede hacer algo así:

>>> razasPerros = [ ‘Afgano’ , ‘Akita’ , ‘Basset Hound’, ‘Maltés’ ]
>>> for indice in range(len(razasPerros)):
>>>          razasPerros[indice] = ‘El perro raza: ‘ + razasPerros[indice]
>>> print(razasPerros)
[ ‘El perro raza: Afgano’ , ‘El perro raza: Akita’ , ‘El perro raza: Basset Hound’ , ‘El perro raza: Maltés’ ]

Se puede hacer uso de slice en las listas al igual que con las cadenas, aunque el conjunto de datos obtenido serán los elementos de la lista. Como se puede observar en el siguiente ejemplo:

>>> razasPerros = [ ‘Afgano’ , ‘Akita’ , ‘Basset Hound’, ‘Maltés’ ]
>>> razasPerros[0:3]
[ ‘Afgano’ , ‘Akita’ , ‘Basset Hound’ ]
>>> razasPerros[2:3]
[‘Basset Hound’]
>>> razasPerros[:1]
[ ‘Afgano’ ]

Para averiguar si un valor es un elemento de la lista se puede hacer uso de los operadores in o not in como se muestra en el siguiente código:

>>> animales = ['lobo','oso','tigre']
>>> 'lobo' in animales
True
>>> 'perro' in animales
False
>>> 'perro' not in animales
True

Métodos de list()

append

Sirve para añadir un elemento al final de la lista.

>>> numeros = [1,2,3]
>>> numeros.append(4)
>>> numeros
[1, 2, 3, 4]

pop

Usado para eliminar el valor indicado entre corchetes o si no se indica nada el último valor de la lista.

>>> numeros = [1,2,3]
>>> numeros.pop()
3
>>> numeros
[1, 2]
>>> numeros.pop(0)
1
>>> numeros
[2]

Extend

Extiende la lista con los valores del objeto que se le pase cómo parámetro.

>>> numeros = [1,2,3]
>>> letras = ['a','b','c']
>>> todo = list()
>>> todo.extend(numeros)
>>> todo
[1, 2, 3]
>>> todo.extend(letras)
>>> todo
[1, 2, 3, 'a', 'b', 'c']

Insert

Requiere dos parámetros el primero indica el índice o posición y el segundo el objeto a insertar.

>>> numeros = [1,2,3]
>>> numeros.insert(1,'a')
>>> numeros
[1, 'a', 2, 3]

Remove

Requiere un parámetro con el elemento a eliminar, busca en la lista eliminando la primera repetición del elemento.

>>> letras = ['a','a','b','c']
>>> letras.remove('a')
>>> letras
['a', 'b', 'c']

Clear

Borra todos los elementos de la lista.

>>> numeros = [1,2,3]
>>> numeros.clear()
>>> numeros
[]

Del

Borra una rebanada (slice) de elementos de la lista en la forma del lista[inicio:fin], hay que recordar que borra hasta fin – 1. Si se usa sin el slice borra la variable, para borrar solo el contenido se usa del[:], si se quiere borrar el primer elemento se usa del[0], para borrar el último se usa del[-1].

>>> numeros = [1,2,3]
>>> del numeros[1:2]
>>> numeros
[1, 3]
>>> numeros = [1,2,3]
>>> del numeros[1:3]
>>> numeros
[1]

Index

Devuelve el índice de la primera ocurrencia en la lista del valor que se pase como primer parámetro, el segundo parámetro opcional es el índice dónde comenzar y el tercer la última posición de índice hasta el que llegar.

>>> numeros = [1,2,3]
>>> numeros.index(1)
0
>>> numeros.index(2)
1
>>> numeros.index(2,0,2)
1
>>> numeros.index(2,0,1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 2 is not in list

Count

Devuelve el total de ocurrencias del valor que se pase como parámetro.

>>> letras = ['a','a','b','c']
>>> letras.count('a')
2

Sort

Ordena la lista por defecto, la ordena en orden ascendente salvo que se indique el parámetro reverse=True en cuyo caso lo hará de forma descendente.

>>> numeros = [5,2,4,3,1]
>>> numeros.sort()
>>> numeros
[1, 2, 3, 4, 5]
>>> numeros.sort(reverse=True)
>>> numeros
[5, 4, 3, 2, 1]

Reverse

Devuelve la lista en orden inverso.

>>> lista = [ 'a','b','c']
>>> lista.reverse()
>>> lista
['c', 'b', 'a']

Copy

Obtiene una copia superficial de la lista. Es útil porque si se pretende clonar una lista y se hace en la forma lista1=lista2 lo que se obtiene es que lista1 es una referencia a lista2 y que lista2 sufre una modificación, lista1 también quedará afectada puesto que es una copia de la referencia a la lista y no una copia de los datos.

>>> numeros = [1,2,3]
>>> otros = numeros
>>> numeros.append(4)
>>> otros
[1, 2, 3, 4]
>>> #Con copy()
... numeros = [1,2,3]
>>> otros = numeros.copy()
>>> numeros.append(4)
>>> otros
[1, 2, 3]

Es posible usar la función enumerate() para obtener a la vez la posición y el valor de los elementos de una lista.

>>> letras = [ 'a' , 'b' , 'c' , 'd' , 'e']
>>> enumerate(letras)
>>> for pos , valor in enumerate(letras):
...     print( pos , valor )
...
0 a
1 b
2 c
3 d
4 e

Se pueden usar las listas como pilas de datos donde meter un elemento en la última posición con append y sacarlo con pop como en el siguiente código.

>>> pila = list()
>>> pila.append(1)
>>> pila.append(2)
>>> pila
[1, 2]
>>> pila.pop()
2
>>> pila.pop()
1
>>> pila
[]

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *