Listas
Contents
Listas#
Introducción#
En es lección estudiamos las listas, las cuales constituyen uno de los objetos más versátiles y utilizados en Python. Las listas son objetos iterables.
Listas#
Las listas son contenedores mutables y ordenados de objetos. Las listas se distinguen porque sus elementos están encerrados entre paréntesis cuadrados. Por ejemplo:
lista1 = ['Alvaro', 'Daniel', 'Pilar', 'Beatriz']
for i in lista1:
print(i, end=' ')
print('')
Alvaro Daniel Pilar Beatriz
Una lista puede contener objetos muy complejos. Por ejemplo observe detenidamente la siguiente construcción.
t1 = (1, 'Oleg', 24.5)
l1 = ['Maria', 'Bonita']
l2 = [t1, l1]
t2 = (l2,'manzana')
print('t1=', t1)
print('l1=', l1)
print('l2=', l2)
print('t2=', t2)
t1= (1, 'Oleg', 24.5)
l1= ['Maria', 'Bonita']
l2= [(1, 'Oleg', 24.5), ['Maria', 'Bonita']]
t2= ([(1, 'Oleg', 24.5), ['Maria', 'Bonita']], 'manzana')
Acceso a los elementos de una lista#
Vamos a acceder a los elementos individuales de las listas y tuplas creadas arriba.
for i in t1:
print(i)
print('\n')
for i in l1:
print(i)
print('\n')
for i in l2:
print(i)
print('\n')
for i in t2:
print(i)
1
Oleg
24.5
Maria
Bonita
(1, 'Oleg', 24.5)
['Maria', 'Bonita']
[(1, 'Oleg', 24.5), ['Maria', 'Bonita']]
manzana
Ahora accedamos al interior de las estructuras complejas.
print(t2[0])
print(t2[1])
print('\n')
print(t2[0][0])
print(t2[0][1])
print('\n')
print(t2[0][0][0])
print(t2[0][0][1])
print(t2[0][0][2])
print('\n')
print(t2[0][1][0])
print(t2[0][1][1])
print(t2[0][0][2])
print('\n')
[(1, 'Oleg', 24.5), ['Maria', 'Bonita']]
manzana
(1, 'Oleg', 24.5)
['Maria', 'Bonita']
1
Oleg
24.5
Maria
Bonita
24.5
Por favor asegúrese de entender completamente la lógica del anterior ejemplo.
Constructor de lista#
list(iterable)
Por ejemplo
vocalTupla = ('a', 'e','i','o','u')
vocalLista = list(vocalTupla )
print(vocalTupla)
print(vocalLista)
('a', 'e', 'i', 'o', 'u')
['a', 'e', 'i', 'o', 'u']
Adicionar elementos a una lista#
lista.append(objeto)
Veamos el siguiente ejemplo
alfabeto = 'abcdefghijklmnñopqrstuvwxyz'
print( 'alfabeto es un objeto string: ',type(alfabeto))
alfabeto es un objeto string: <class 'str'>
Vamos a crear una lista vacía y la vamos a llenar con cada uno de los elementos de alfabeto
alfaL = []
for i in alfabeto:
alfaL.append(i)
print(alfaL)
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'ñ', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
Concatenar dos listas#
N = len(alfaL)
numL = []
for i in range(N):
numL.append(i)
print('alfaL = ',alfaL)
print('\n')
print('numL = ',numL)
print('\n')
alfanumL = alfaL + numL
alfanumLL = [alfaL, numL]
print('alfanumL = ',alfanumL)
print('\n')
print('alfanumLL = ',alfanumLL)
alfaL = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'ñ', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
numL = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]
alfanumL = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'ñ', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]
alfanumLL = [['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'ñ', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]]
# Acceso a los elementos de la lista alfanumLL
for i in range(N):
print(alfanumLL[0][i],alfanumLL[1][i] )
a 0
b 1
c 2
d 3
e 4
f 5
g 6
h 7
i 8
j 9
k 10
l 11
m 12
n 13
ñ 14
o 15
p 16
q 17
r 18
s 19
t 20
u 21
v 22
w 23
x 24
y 25
z 26
Eliminar elementos de una lista#
lista.remove(objeto)
alfaL.remove('c')
print(alfaL)
['a', 'b', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'ñ', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
Métodos para manipulación de listas#
Method |
Description |
---|---|
append() |
Agrega un elemento al final de la lista |
clear() |
Remueve todo los elementos de la lista |
copy() |
Regresa una copia de la lista |
count() |
Regresa el número de elementos con el valor especificado |
extend() |
Agrega elementos de una lista (o cualquier iterable) al final de esta lista |
index() |
Regresa el índice del primer elemento con el valor especificado |
insert() |
Adiciona un elemento en la posición especificada |
pop() |
Remueve un elemento en la posición especificada y puede retornarlo si se hce una asignación |
remove() |
Remueve el item con este valor específico |
reverse() |
Invierte el orden de la lista |
sort() |
Ordena la lista |
Por favor pruebe cada uno de estos métodos. Veamos unos pocos ejemplos.
print(alfaL.index('d'))
alfaL.insert(2,'c')
print(alfaL)
2
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'ñ', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
alfanumLL.reverse()
print(alfanumLL)
[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26], ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'ñ', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']]
Comprensión de listas#
Ya vimos que es posible crear listas a partir de objetos iterables.
Aquí mostramos que es posible hacer nuevas listas con ciertas manipulaciones a partir de otras. Esto con un sintaxis simple y rápido.
Veamos un caso sin usar comprensión de listas
frutas = ["manzana", "kiwi", "guanabana", "limón", "níspero", "Pomelo", "Mango"]
lista2 = []
for x in frutas:
if "a" in x:
lista2.append(x)
print(lista2)
['manzana', 'guanabana', 'Mango']
Funciona pero necesitamos varias lineas. Ahora usando comprensión
lista2 = [x for x in frutas if "a" in x]
print(lista2)
['manzana', 'guanabana', 'Mango']
Podemos usar cualquier operador lógico y operador de comparación en estos casos
lista2 = [x for x in frutas if "a" not in x]
print(lista2)
['kiwi', 'limón', 'níspero', 'Pomelo']
lista2 = [x for x in frutas if len(x)<6]
print(lista2)
['kiwi', 'limón', 'Mango']
Podemos hacer comprensión con cualquier tipo de iterable
lista2 = [x for x in range(10) if x % 2 ==0]
print(lista2)
[0, 2, 4, 6, 8]
lista2 = [x for x in t1 if type(x)==int or type(x)==float]
print(lista2)
[1, 24.5]