Está en la página 1de 19

1

Listas por Comprensión


Fundamentos de Programación

Machine Learning
1 Listas por comprensión
Logros de la Sesión

Al finalizar esta sesión, estarás en capacidad de:

• Comprender y utilizar adecuadamente los diferentes tipo de


comprehensions
Notaciones matemáticas para definir un conjunto:

En matemáticas existen 2 notaciones para definir un conjunto; (a) por extensión,


(b) por comprensión
1. ¿Cómo definiría por extensión el conjunto A? ¿Cómo lo definiría por
comprensión?
2. ¿Cómo definiría por extensión el conjunto B? ¿Cómo lo definiría por
comprensión?
3. ¿Cómo definiría por comprensión el conjunto (A ∩ B)?
Notaciones matemáticas para definir un conjunto:
1. Problema 1:
a. A = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24}
b. A = { x | x ∈ N, x es par, x ≥ 2 ∧ x ≤ 24}
2. Problema 2:
a. B = {3, 6, 9, 12, 15, 18, 21, 24, 27}
b. B = { x | x ∈ N, x es múltiplo de 3, x ≥ 3 ∧ x ≤ 27}
3. Problema 3:
a. (A ∩ B) = { x | x ∈ N, x es par, x es múltiplo de 3, x ≥ 3 ∧ x ≤ 24}
b. (A ∩ B) = { x | x ∈ A Λ x ∈ B
¿Qué es Comprehension en Python?
Es una forma de instrucción que permite de manera concisa la
construcción de una colección secuencial.

Comprehension se basa en la notación por comprensión de conjuntos.


Desde la perspectiva computacional Comprehension utiliza un estilo
declarativo y funcional.

Python soporta 4 tipos de comprehension:


● Comprehension de listas
● Comprehension de diccionarios
● Comprehension de conjuntos
● Comprehension de generadores
Comprehension de listas
Es común en programación crear nuevas listas donde:
● Cada elemento es el resultado de alguna operación aplicada a cada miembro
de otra secuencia o iterable,
● Queremos crear una secuencia parcial con sólo aquellos elementos que
satisfacen cierta condición.

List comprehension es generalmente más compacto y rápido que


utilizar estructuras de control de bucles regulares y llamadas a función
para crear la lista.
Sintaxis de List Comprehension

La sintaxis de list comprehension consiste de corchetes rodeando una


<expresión> seguida de la declaración for y luego cero o más
declaraciones for o if.

El resultado será una nueva lista que resulta de evaluar la <expresión>


en el contexto de los for o if que le siguen.

Ejemplo de sintaxis

lista = [expresion for item in iterable]


lista = [expresion for item in iterable if condition]
Ejemplos de List Comprehension

numeros = [1,2,3,4,5,6,7,8]

r1 = []
for e in numeros:
e = e*2
r1.append(e)
print(r1)

r2 = [e*2 for e in numeros]


print(r2)
Ejemplos de List Comprehension
strings = ["Domingo", "Lunes", "Martes", "Miércoles",
"Jueves", "Viernes", "Sábado"]

r3 = []
for e in strings:
e = e.upper()
r3.append(e)
print(r3)

r4 = [e.upper() for e in strings]


print(r4)
Ejemplos de List Comprehension
A = [x for x in range(2,25,2)]
B = [x for x in range(3,28,3)]
print(A)
print(B)
Ejercicios
1. Escribir un programa que genere la lista de números entre 0 y 50
que no sean pares y que no sean múltiplos de 3.

1. Escribir un programa que genere la lista de 20 números aleatorios


entre 1 y 15.

1. Dado el siguiente texto:

texto = "10,
texto 20, 20,
= "10, 33, 33,
40, 40,
11, 11,
90" 90"

Escribir un programa que genere una lista con 6 valores numéricos


incluidos en el texto y luego calcular la suma de aquellos valores
múltiplos de 10.
Soluciones
Problema 1:
lista1 = [x for x in range(0, 50) if x % 2 != 0 and x % 3 != 0]
print(lista1)
Problema 2:
from random import randint
lista3 = [randint(1, 15) for _ in range(20)]
print(lista3)

Problema 3:
texto = "10,20, 33, 40, 11, 90"
lista = [int(x) for x in texto.split(',')]
print(lista)
suma = sum([x for x in lista if x % 10 == 0])
print(suma)
List Comprehension Anidado
Ejemplo de sintaxis con for anidados:

lista = [expresion for item1 in iterable for item2 in


iterable]

Dados el conjunto C, definir una lista que sea la suma de las filas y
calcular el total de todos los valores.
# Matriz: Lista de Lista
C = [ [2, 3, 4],
[40, 50, 60],
[100, 200, 300] ]
Solución de List Comprehension
# suma por filas
sum_row1 = [sum(x) for x in C]
print(sum_row1)
# equivalente usando for
sum_row2 = []
for row in C:
subtotal = sum(row)
sum_row2.append(subtotal)
print(sum_row2)
# suma total
total1 = sum([x for row in C for x in row])
print(total1)
# equivalente usando for
total2 = 0
for row in C:
for x in row:
total2 += x
print(total2)
List Comprehension para ingreso de datos
Escribir un programa que permita ingresar n números y genere una lista:
# llamada usando for
n = int(input("Cantidad \#1: "))
lista1 = []
for i in range(n):
value = int(input(f"Ingrese \{i+1\}:"))
lista1.append(value)

# llamada concisa usando comprehension


n = int(input("Cantidad \#2: "))
lista2 = [int(input(f"Ingrese \{i+1\}:")) for i in range(n)]

# llamada mas concisa


lista3 = [int(input(f"Ingrese \{i+1\}:")) for i in range(int(input("Cantidad \#3: ")))]

# mostrando listas
print("Lista 1:", lista1)
print("Lista 2:", lista2)
print("Lista 3:", lista3)
Evaluación
Responda las siguientes preguntas:

1. ¿Qué es Comprehension?
2. ¿Cuál es la ventaja de comprehension?
3. Respecto al tipo de colección ¿Existe comprehension para tuplas?
Cierre
En esta sesión hemos aprendido :
● Una forma concisa de declarar listas por medio de List Comprehension.
● Comprehension se basa en la notación por comprensión de conjuntos.
● Un programa conciso y claro permite reducir los errores de codificación.
Gracias
Nos vemos en la siguiente
clase!

También podría gustarte