elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  buscar un resultado especifico en una lista
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: buscar un resultado especifico en una lista  (Leído 3,975 veces)
flony


Desconectado Desconectado

Mensajes: 584



Ver Perfil
buscar un resultado especifico en una lista
« en: 20 Septiembre 2022, 03:10 am »

tengo una lista de números quiero saber si la suma de alguna combinación de ellos da un número especifico si es así lo muestre por pantalla esos números y si no que muestre no hay combinación posible
la lista es [1484.22, 108232.76, 176396.21, 24198.48, 169730.89, 678014.29, 290686.27, 230137.01, 44312.82, 13455.77, 28043.32, 192772.68, 18959.6, 25437.53, 541800.77, 12484.72, 57927.72, 409054.79, 40875.61, 71816.21, 113477.16, 222382.1, 7257.94, 143278.25, 2273.06, 118080.24, 45247.6, 133151.58, 267.97, 1018.53, 50602.21, 19182.73, 373.29, 14702.22, 4041.68, 80831.78, 1189.09, 20255.8, 46619.66, 5016.87, 23460.55, 109208.0, 107395.87]
el código que tengo es el siguiente
Código:
import pandas as pd

lista_trabajar = pd.read_excel('preproceso.xlsx')

monto_a_trabajar = lista_trabajar.iloc[:, -1]
monto = monto_a_trabajar.tolist()
monto_A_Buscar = 1346675.28
resultado = []

print (monto)

def suma(monto, monto_A_Buscar):
    for i in monto:
        resultado.append(i)
        resul = sum(resultado)
        if resul == monto_A_Buscar:
            return resultado
        else: print ('no salio')


En línea

si un problema no tiene solucion entonces no es un problema...es algo inevitable
reymosquito

Desconectado Desconectado

Mensajes: 81


Ver Perfil
Re: buscar un resultado especifico en una lista
« Respuesta #1 en: 20 Septiembre 2022, 05:39 am »

hay muchas formas de hacerlo, te muestro una, como al fin y al cabo solo estás trabajando con una lista no hago lo de pandas, cambio los nombres para escribir menos y agrego un último valor a la lista solo para verificar si funciona:
Código
  1. lista = [1484.22, 108232.76, 176396.21, 24198.48, 169730.89, 678014.29, 290686.27, 230137.01, 44312.82, 13455.77,
  2.         28043.32, 192772.68, 18959.6, 25437.53, 541800.77, 12484.72, 57927.72, 409054.79, 40875.61, 71816.21, 113477.16,
  3.         222382.1, 7257.94, 143278.25, 2273.06, 118080.24, 45247.6, 133151.58, 267.97, 1018.53, 50602.21, 19182.73,
  4.         373.29, 14702.22, 4041.68, 80831.78, 1189.09, 20255.8, 46619.66, 5016.87, 23460.55, 109208.0, 107395.87,1345191.06]
  5. k =1346675.28
  6.  
  7. def suma(iterador,k):
  8.    resultado = []
  9.    for elemento in iterador:
  10.        if k - elemento in lista :
  11.            resultado.append((elemento,k- elemento))
  12.    if len(resultado) > 0:
  13.        return resultado
  14.    return 'No salió'
  15.  
  16. print(suma(lista,k))
  17.  
  18.  


En línea

chronologie

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: buscar un resultado especifico en una lista
« Respuesta #2 en: 20 Septiembre 2022, 06:48 am »

dependiendo de la cantidad de datos, puedes hacer una busqueda binaria y ahorrar proceso y mayor rapidez.
En línea

flony


Desconectado Desconectado

Mensajes: 584



Ver Perfil
Re: buscar un resultado especifico en una lista
« Respuesta #3 en: 25 Septiembre 2022, 00:54 am »

muchas gracias por la data
En línea

si un problema no tiene solucion entonces no es un problema...es algo inevitable
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines