IIC2233 / Syllabus-2022-2

Repositorio oficial del curso IIC2233 Programación Avanzada 🚀✨
61 stars 61 forks source link

Como hacer un list comprehension de variables #242

Open panchouc opened 2 years ago

panchouc commented 2 years ago

Prerrequisitos

(Marcar colocando una X entre los corchetes los ítems que ya hiciste, así: "[X]")

Contenido

¡Hola! Tengo una duda respecto a si alguien sabe como puedo, por ejemplo, crear una lista (o diccionario) de variables que ya existan. Digamos que tengo muchas variables con distintas terminaciones de número, pero que la palabra base sea la misma, por ejemplo: variable_1, variable_2, variable_3 y así todo el rato. ¿Cómo puedo lograr lo siguiente, sin tener que escribir todas las variables una a una?


lista_variables = [variable_1, variable_2, variable_3, variable_4]

Si bien no son tantas, se vuelve un tanto "latero" hacerlo cuando hay muchísimas más variables y con nombres más largos. Había intentado hacerlo con f-strings y un list-comprehension pero no me funcionó. De antemano gracias.

Lord-Kelsier commented 2 years ago

Hola, en efecto se puede, @Vabu77 encontro una forma de hacerlo

variable_1 = 2
variable_2 = 3
variable_3 = 5

lista = [globals()[f"variable_{i}"] for i in range(1,4)]
print(lista)

Pero, esto es una mala practica, por varias razones

Por lo mismo no te recomiendo usarlo en alguna tarea. En primer lugar estas usando variables globales lo cual es una mala practica. En segundo lugar, si quieres guardarlas todas en 1 lista esto es un indicador de que existe un grado de relacion entre las variables y cuando esto ocurre lo ideal es encapsular estas variables en un objeto/clase. Si solo vas a usar una clase para guardar datos lo recomendable es usar named tuples o dataclass