¿Cómo funciona este algoritmo? ¿Alguien puede explicarme por favor ... tenga una entrevista mañana?

def sum_in(numbers, sum_):
    """whether any two numbers from `numbers` form `sum_`."""
    return any((sum_-n) in numbers for n in numbers)

It basically takes a list, and checks if any two numbers from it form a sum equalling sum_. I can't seem to get how that sum_-n verifies that TWO numbers equal the sum. Wouldn't it just be checking with one n each loop?!

preguntado el 31 de enero de 12 a las 08:01

2 Respuestas

It's checking sum_-n is in numbers. If it is, then that number + n = sum_.

Respondido el 31 de enero de 12 a las 12:01

For each iteration, a bool is generated whether (sum_ - n) is in the set of numbers. Si uno de estos bools es True, la función devuelve True. Vuelve False otherwise, clearly.

This is not a great algorithm, to put it mildly.

Considerar:

sum_in((3,), 6)

Esto volverá True. ¿Por qué? Porque 6 - 3 es en numbers.

So yes, it is only checking un valor en cada iteración.

Good luck with the interview!

Respondido el 31 de enero de 12 a las 12:01

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.