Python - ¿Cómo generar un arreglo con numeros de listas diferentes?

 
Vista:

¿Cómo generar un arreglo con numeros de listas diferentes?

Publicado por Albertito97 (5 intervenciones) el 26/01/2021 22:22:10
Compañeros necesito un poco de su ayuda con mi código. Este programa genera un número aleatorio 3 veces y en cada vez, ese numero binario lo compara con cada uno de los numeros de la lista_1 y si no es menor que el número que está en la posición i de la lista 1, se va con el siguiente; si es menor, el numero que se encuentra en la posicion i de la lista 2 se va a la lista nueva.

Lo que quiero hacer es ver de que manera puedo mejorar la parte de los if porque no siempre van a ser 5 elementos en la lista 1, y si llegan a ser 22 numeros en la lista, tendría que hacer 22 condiciones if, y eso es lo que quiero optimizar

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
27
28
29
import random
 
lista_1 = [0.2747708763, 0.3666876212, 0.5185667594, 0.80445674554, 0.99999998571]
lista_2 = [173383, 29665658, 312121, 43457, 2344344]
lista_nueva = []
posicion = len(lista_1)
 
print(f"lista 1 = {lista_1}")
print()
print(f"lista 2 = {lista_2}")
print()
 
for i in range(0,3):
	numero=random.random()
	print(f"numero{i} = {numero}")
 
	if numero<=lista_1[0]:
		lista_nueva.append(lista_2[0])
	elif numero<=lista_1[posicion-4]:
		lista_nueva.append(lista_2[posicion-4])
	elif numero<=lista_1[posicion-3]:
		lista_nueva.append(lista_2[posicion-3])
	elif numero<=lista_1[posicion-2]:
		lista_nueva.append(lista_2[posicion-2])
	else:
		lista_nueva.append(lista_2[posicion-1])
 
print()
print(f"lista final = {lista_nueva}")
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 41
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

¿Cómo generar un arreglo con numeros de listas diferentes?

Publicado por David (6 intervenciones) el 27/01/2021 00:52:51
Soy algo novato y me ha costado entenderlo :( probablemente sea fallo mío, pero cuanto más fácil sea que se entienda más fácil será que te den solución. Te hago varios comentarios y me corriges en todo lo que consideres oportuno:

- No son números binarios (no son unos y ceros), son números en sistema decimal que incluye números enteros y números decimales.
- Cuando se trata de recorrer posiciones se usa un bucle FOR no se hace con un IF para cada caso porque tendrás ese problema, mucho código y según la situación imposibilidad para predecir de antemano la cantidad de elementos.
- Tú ya tienes un bucle FOR, pero creo que necesitas añadir otro dentro para que por cada número genero vaya recorriendo cada una de las listas (arreglos, arrays, llámales como quieras).

Comprueba si algo así funciona, si es correcto, te agradezco lo comentes y trata de comprenderlo. Si tienes dudas, pregunta. Yo lo he comparado con tu código y creo que obtengo el mismo resultado. Fíjate que necesitas un break para salir del bucle y no seguir comprobando. Te agradezco feedback.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
lista_1 = [0.2747708763, 0.3666876212, 0.5185667594, 0.80445674554, 0.99999998571]
lista_2 = [173383, 29665658, 312121, 43457, 2344344]
lista_nueva = []
posicion = len(lista_1)
 
print(f"lista 1 = {lista_1}")
print()
print(f"lista 2 = {lista_2}")
print()
 
for i in range(0,3):
    numero=random.random()
    print(f"numero{i} = {numero}")
    for x in range(len(lista_1)):
        if numero<=lista_1[x]:
            lista_nueva.append(lista_2[x])
            break
 
print()
print(f"lista final = {lista_nueva}")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

¿Cómo generar un arreglo con numeros de listas diferentes?

Publicado por Albertito97 (5 intervenciones) el 27/01/2021 02:38:37
Excelente, se resolvió mi problema, sos grande
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar