7.1 Multiplicación
En Python hay una sintaxis conveniente que permite aumentar la cantidad de elementos. Para esto se utiliza el simple operador de multiplicación.
Generación de cadenas
Se puede aplicar a cadenas:
print("Mamá" * 5) # mostrará MamáMamáMamáMamáMamá
O, por ejemplo, puedes imprimir rápidamente una línea separadora:
print("-" * 40) # mostrará ----------------------------------------
Generación de listas
También puedes multiplicar la cantidad de elementos en una lista:
print(["apple"] * 5) # mostrará ['apple', 'apple', 'apple', 'apple', 'apple']
Este operador tiene un uso más práctico también. Por ejemplo, si quieres crear una lista de 10 elementos llenos de ceros:
alist = [0] * 10
print(alist) # mostrará [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Puedes incluso hacer un array bidimensional. Por ejemplo, si quieres crear un array 20x10, lleno de ceros. Es igualmente fácil:
alist = [[0] * 10] * 20
print(alist) # mostrará [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ...]
Muy práctico, ¿no?
7.2 List Comprehension
En Python hay una herramienta útil llamada "List Comprehension" (comprensión de listas) — es una forma conveniente y compacta de crear listas. Esta herramienta sintáctica permite generar nuevas listas aplicando una expresión a cada elemento de un objeto iterable en una sola línea de código.
Es más fácil mostrarlo que describirlo. Esta herramienta sintáctica se ve así:
[expresión for variable in secuencia]
Donde:
-
variable
— identificador de alguna variable, -
secuencia
— secuencia de valores que toma esa variable (puede ser una lista, cadena u objeto obtenido mediante la funciónrange
), -
expresión
— alguna expresión, generalmente dependiente de la variable utilizada en el generador, con la cual se llenarán los elementos de la lista.
¡Importante!
Toda la expresión debe estar entre
corchetes.
Aquí algunos ejemplos de uso de generadores:
Crear una lista de n ceros también se puede hacer con un generador:
alist = [0 for i in range(100)]
Crear una lista llena de cuadrados de números enteros se puede hacer así:
n = 5
alist = [i ** 2 for i in range(n)]
Crear una lista llena de números enteros del 1 al n:
n = 10
alist = [i + 1 for i in range(n)]
Y así es como puedes obtener una lista llena de números aleatorios del 1 al 9
(usando la función randrange()
del módulo random):
from random import randrange
n = 10
alist = [randrange(1, 10) for i in range(n)]
7.3 Ciclo en List Comprehension
List Comprehension no solo se puede usar para generar listas. En principio, es solo una forma compacta de escribir un ciclo for.
Por ejemplo, se puede usar para simplemente imprimir algunos valores de una lista en pantalla:
alist = ["apple", "banana", "cherry"]
[print(x) for x in alist]
O incluso se pueden ingresar valores desde el teclado:
a = [input() for i in range(int(input()))]
En este ejemplo, la lista estará compuesta de cadenas leídas desde la entrada estándar: primero necesitas ingresar el número de elementos de la lista (este valor se usará como argumento
de la función range
), y luego el número especificado de cadenas.
En la forma que estás acostumbrado, este código se vería así:
n = int(input())
a = []
for i in range(n):
x = input()
a.append(x)
En general, List Comprehension tiene muchas posibilidades:
Se pueden usar condiciones:
Incluir condiciones en la expresión permite filtrar elementos, por ejemplo, se puede crear una lista solo con números pares:
[x for x in range(10) if x % 2 == 0]
Ciclos anidados:
El generador permite usar ciclos anidados, por ejemplo, para crear arrays multidimensionales:
[(x, y) for x in range(3) for y in range(3)]
GO TO FULL VERSION