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]