0% encontró este documento útil (0 votos)
12 vistas6 páginas

Comprensión de Listas en Python

La comprensión de listas en Python permite crear listas de manera concisa a partir de otras colecciones. Se presentan varios ejemplos que ilustran su uso, como elevar valores al cuadrado, filtrar personas mayores de edad y generar múltiplos de 8. Además, se muestra cómo combinar múltiples bucles en una sola línea y se resuelve el clásico problema de 'FizzBuzz' utilizando esta técnica.

Cargado por

rdiegon.es
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
12 vistas6 páginas

Comprensión de Listas en Python

La comprensión de listas en Python permite crear listas de manera concisa a partir de otras colecciones. Se presentan varios ejemplos que ilustran su uso, como elevar valores al cuadrado, filtrar personas mayores de edad y generar múltiplos de 8. Además, se muestra cómo combinar múltiples bucles en una sola línea y se resuelve el clásico problema de 'FizzBuzz' utilizando esta técnica.

Cargado por

rdiegon.es
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Comprensión de listas en Python

La comprensión de listas es una construcción en Python que nos permite crear


listas a partir de otras listas, tuplas y cualquier iterable.
Nos permite escribir en forma más concisa un algoritmo. Veamos con un
ejemplo como lo resolvemos con y sin comprensión de listas.

Problema 1
Definir una lista con 5 valores enteros, luego a partir de la primer lista generar
una segunda lista con los valores elevados al cuadrado.

Programa:
lista1=[8, 5, 4, 10, 2]

lista2=[]

for elemento in lista1:

lista2.append(elemento*elemento)

print("Lista 1")

print(lista1)

print("Nueva lista")

print(lista2)

Mediante la construcción de comprensión de listas tenemos:

Programa:
lista1=[8, 5, 4, 10, 2]

lista2=[elemento*elemento for elemento in lista1]

print("Lista 1")

print(lista1)

print("Nueva lista")

print(lista2)

Como vemos lo resolvemos en una sola línea:

lista2=[elemento*elemento for elemento in lista1]

Lo que hacíamos en 3 líneas:


lista2=[]

for elemento in lista1:

lista2.append(elemento*elemento)

La sintaxis para la comprensión de listas requiere disponer un ciclo repetitivo a


la derecha 'for elemento in lista1' y el valor a generar a la izquierda
'elemento*elemento':

lista2=[elemento*elemento for elemento in lista1]

Esta construcción para el recorrido de iterables se ejecuta más rápido que la


forma tradicional. Requiere un poco de tiempo para adaptar nuestro
razonamiento a la nueva sintaxis.

Problema 2
Se tiene una lista con un conjunto de tuplas con los nombres y edades de
personas:

personas=[('pedro',33),('ana',3),('juan',13),('carla',45)]

Generar una lista con las personas mayores de edad.

Programa:
personas=[('pedro',33),('ana',3),('juan',13),('carla',45)]

personas_mayores=[per for per in personas if per[1]>=18]

print(personas_mayores)

Mediante el for recuperamos cada persona en la nueva lista si su edad es


mayor o igual a 18:

personas_mayores=[per for per in personas if per[1]>=18]


Problema 3
Generar una lista con todos los valores múltiplos de 8 comprendidos entre 1 y
500.

Programa:
multiplos8=[valor for valor in range(1,501) if valor%8==0]

print(multiplos8)

Disponemos un for que recorre los valores del 1 al 500 inclusive, cada vez que
el resto de dividir dicho valor por 8 se verifica verdadero procedemos a guardar
dicho valor en la lista 'multiplos8'.

Varios for
Podemos utilizar más de un for cuando empleamos la característica de 'List
Comprehensions' de Python.

Problema 4
Se tiene una lista de nombres de personas. Generar otra lista cuyos elementos
sean a su vez listas con dos nombres cada uno.
Tener en cuenta que nunca se debe combinar el mismo nombre dos veces.

Programa:

nombres=['juan','pablo','luis','mauro','hector']

nombres_compuestos=[[nombre1,nombre2] for nombre1 in nombres for nombre2 in


nombres if nombre1!=nombre2]

print(nombres_compuestos)

Podemos comprobar que conciso ha quedado el algoritmo para generar pares


de nombres:
Si analizamos:

nombres_compuestos=[[nombre1,nombre2] for nombre1 in nombres for nombre2 in nombres if


nombre1!=nombre2]

Cada vez que la condición del if se verifica verdadera: 'if nombre1!=nombre2'


se genera una lista con los dos nombres: '[nombre1,nombre2]'.
Como tenemos dos estructuras for cada vez que de ejecuta el for interno
completamente avanza uno el for externo: 'for nombre1 in nombres for
nombre2 in nombres'.
El mismo algoritmo pero sin utilizar 'List Comprehensions' es:

nombres=['juan','pablo','luis','mauro','hector']

nombres_compuestos=[]

for nombre1 in nombres:

for nombre2 in nombres:

if nombre1!=nombre2:

nombres_compuestos.append([nombre1,nombre2])

print(nombres_compuestos)
Requiere tiempo para habituarse a las 'List Comprehensions', pero una vez que
le tomamos la mano podemos obtener grandes ventajas en la definición de
algoritmos muy breves.
Vamos a resolver un problema clásico que a muchos programadores le han
hecho en su primer entrevista para un puesto de programador.

Problema 5
Codificar un programa que muestre en pantalla los números del 1 al 100,
sustituyendo los múltiplos de 3 por el palabra "Fizz" y, a su vez, los múltiplos
de 5 por "Buzz". Para los números que, al tiempo, son múltiplos de 3 y 5,
mostrar el mensaje "FizzBuzz".

Programa:
for nro in range(1,101):

if nro%3==0 and nro%5==0:

print("FizzBuzz")

elif nro%3==0:

print("Fizz")

elif nro%5==0:

print("Buzz")

else:

print(nro)

Ahora la solución de este problema empleando 'List Comprehensions'.

Programa:
print(["Fizz"*(not nro%3) + "Buzz"*(not nro%5) or nro for nro in range(1, 101)])

Con una única línea tenemos tenemos una lista con la secuencia que pide el
problema:

También podría gustarte