Compruebe si la suma de 2 números en una lista está presente en otra lista en Python

CorePress2023-11-30  1

Tengo dos listas. El primero son los números entre los que la computadora puede elegir para obtener uno de los números de resultado final. He probado diferentes formas de hacer que esto funcione y ninguna parece funcionar. Siempre recibo el error de tipo(s) de operando no admitidos para -: 'lista' e 'int'. No puedo restar un int de una lista. Esta pregunta es básicamente otra forma de hacer esto. Se agradece la ayuda.

lst_choice = [1, 6, 7, 3, 8, 9, 2]
end_result = [5, 2, 7, 4, 9, 14]

for i, num in enumerate(lst_choice [:-1]):
    comp = end_result - num
    if comp in lst_choice [i+1:]:
        print("The two numbers are", num, "and", comp)
        break
else:
    print("There are no solutions")
  • 2 Publique más código que muestre lo que ya ha probado.-huesos225 8 de junio de 2020 a las 16:38
  • 1 ¿Cuál es el resultado deseado? - Céfiro 8 de junio de 2020 a las 16:38
  • Dos números de lst_choice suman uno de end_result en la lista. - Joe 8 de junio de 2020a las 16:40
  • Aquí es donde obtengo el TypeError - Joe 8 de junio de 2020 a las 16:41
  • 1 No puedes usar toda la lista, tienes que elegir un elemento de la lista. Consulte este artículo, trata sobre todas las cosas que puede hacer con las listas: w3schools.com/python/python_lists.asp - Jon Nezbit8 de junio de 2020 a las 16:43


------------------------

Puedes hacer esto usando la comprensión de listas de esta manera:

allSums = [lst_choice[x]+y for x in range(len(lst_choice)) for y in lst_choice[x+1:]]
allSumNums = [(lst_choice[x], y) for x in range(len(lst_choice)) for y in lst_choice[x+1:]]

if(list(set(allSums) & set(end_result)) == []):
    print('no solutions exist')
else:
    for x, y in allSumNums:
        print('The 2 numbers are', x, y)

Espero que te ayude :)

7
  • ¡Me alegra poder ser de ayuda! - Sahith Kurapati 8 de junio de 2020 a las 16:52
  • Esto parece estar agregando dos números de la lista que no están allí - Joe 8 de junio de 2020 a las 16:55
  • como 7 y 7 o 1 y 1 o 8 y 8 - Joe 8 de junio de 2020 a las 16:55
  • Déjame comprobarlo - Sahith Kurapati 8 de junio de 2020 a las 16:56
  • Gracias por señalarlo. He cambiado la función. ¡Funciona como se esperaba ahora! - Sahith Kurapati 8 de junio de 2020 a las 17:00
Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare