Listas
Listas
Una lista es una secuencias ordenadas de objetos de distintos tipos.
Se construyen poniendo los elementos entre corchetes [
]
separados por comas.
Se caracterizan por:
- Tienen orden.
- Pueden contener elementos de distintos tipos.
- Son mutables, es decir, pueden alterarse durante la ejecución de un programa.
# Lista vacía
>>> type([])
<class 'list'>
# Lista con elementos de distintos tipos
>>> [1, "dos", True]
# Listas anidadas
>>> [1, [2, 3], 4]
Creación de listas mediante la función list()
Otra forma de crear listas es mediante la función list()
.
list(c)
: Crea una lista con los elementos de la secuencia o colecciónc
.
Se pueden indicar los elementos separados por comas, mediante una cadena, o mediante una colección de elementos iterable.
>>> list()
[]
>>> list(1, 2, 3)
[1, 2, 3]
>>> list("Python")
['P', 'y', 't', 'h', 'o', 'n']
Acceso a los elementos de una lista
Se utilizan los mismos operadores de acceso que para cadenas de caracteres.
l[i]
: Devuelve el elemento de la listal
con el índicei
.
El índice del primer elemento de la lista es 0.
>>> a = ['P', 'y', 't', 'h', 'o', 'n']
>>> a[0]
'P'
>>> a[5]
'n'
>>> a[6]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> a[-1]
'n'
Sublistas
l[i:j:k]
: Devuelve la sublista desde el elemento del
con el índicei
hasta el elemento anterior al índicej
, tomando elementos cadak
.
>>> a = ['P', 'y', 't', 'h', 'o', 'n']
>>> a[1:4]
['y', 't', 'h']
>>> a[1:1]
[]
>>> a[:-3]
['y', 't', 'h']
>>> a[:]
['P', 'y', 't', 'h', 'o', 'n']
>>> a[0:6:2]
['P', 't', 'o']
Operaciones que no modifican una lista
len(l)
: Devuelve el número de elementos de la listal
.min(l)
: Devuelve el mínimo elemento de la listal
siempre que los datos sean comparables.max(l)
: Devuelve el máximo elemento de la listal
siempre que los datos sean comparables.sum(l)
: Devuelve la suma de los elementos de la listal
, siempre que los datos se puedan sumar.dato in l
: DevuelveTrue
si el datodato
pertenece a la listal
yFalse
en caso contrario.l.index(dato)
: Devuelve la posición que ocupa en la listal
el primer elemento con valordato
.l.count(dato)
: Devuelve el número de veces que el valordato
está contenido en la listal
.all(l)
: DevuelveTrue
si todos los elementos de la listal
sonTrue
yFalse
en caso contrario.any(l)
: DevuelveTrue
si algún elemento de la listal
esTrue
yFalse
en caso contrario.
>>> a = [1, 2, 2, 3]
>>> len(a)
4
>>> min(a)
1
>>> max(a)
3
>>> sum(a)
8
>>> 3 in a
True
>>> a.index(2)
1
>>> a.count(2)
2
>>> all(a)
True
>>> any([0, False, 3<2])
False
Operaciones que modifican una lista
l1 + l2
: Crea una nueva lista concatenan los elementos de la listasl1
yl2
.l.append(dato)
: Añadedato
al final de la listal
.l.extend(sequencia)
: Añade los datos desequencia
al final de la listal
.l.insert(índice, dato)
: Insertadato
en la posicióníndice
de la listal
y desplaza los elementos una posición a partir de la posicióníndice
.l.remove(dato)
: Elimina el primer elemento con valordato
en la listal
y desplaza los que están por detrás de él una posición hacia delante.l.pop([índice])
: Devuelve el dato en la posicióníndice
y lo elimina de la listal
, desplazando los elementos por detrás de él una posición hacia delante.l.sort()
: Ordena los elementos de la listal
de acuerdo al orden predefinido, siempre que los elementos sean comparables.l.reverse()
: invierte el orden de los elementos de la listal
.
>>> a = [1, 3]
>>> b = [2 , 4, 6]
>>> a.append(5)
>>> a
[1, 3, 5]
>>> a.remove(3)
>>> a
[1, 5]
>>> a.insert(1, 3)
>>> a
[1, 3, 5]
>>> b.pop()
6
>>> c = a + b
>>> c
[1, 3, 5, 2, 4]
>>> c.sort()
>>> c
[1, 2, 3, 4, 5]
>>> c.reverse()
>>> c
[5, 4, 3, 2, 1]
Copia de listas
Existen dos formas de copiar listas:
- Copia por referencia
l1 = l2
: Asocia la la variablel1
la misma lista que tiene asociada la variablel2
, es decir, ambas variables apuntan a la misma dirección de memoria. Cualquier cambio que hagamos a través del1
ol2
afectará a la misma lista. - Copia por valor
l1 = list(l2)
: Crea una copia de la lista asociada al2
en una dirección de memoria diferente y se la asocia al1
. Las variables apuntan a direcciones de memoria diferentes que contienen los mismos datos. Cualquier cambio que hagamos a través del1
no afectará a la lista del2
y viceversa.
>>> a = [1, 2, 3]
>>> # copia por referencia
>>> b = a
>>> b
[1, 2, 3]
>>> b.remove(2)
>>> b
[1, 3]
>>> a
[1, 3]
>>> a = [1, 2, 3]
>>> # copia por referencia
>>> b = list(a)
>>> b
[1, 2, 3]
>>> b.remove(2)
>>> b
[1, 3]
>>> a
[1, 2, 3]