Как я могу вернуть 1 еще 0 - PullRequest
0 голосов
/ 17 июня 2020

** У меня есть эта функция, эта функция, которая возвращает 1, если сумма любых двух чисел в ней равна другому числу в списке: **

def two_sum(numbers:list ,k:int) -> int:
    return (1 for x in numbers for y in numbers if x+y==k)

теперь я хочу вернуть 0 если сумма этих чисел не равна k, поэтому я пробовал этот способ

def two_sum(numbers:list ,k:int) -> int:
    return (1 for x in numbers for y in numbers if x+y==k else 0)

**, но я продолжаю получать недопустимую синтаксическую ошибку. любая помощь? **

1 Ответ

5 голосов
/ 17 июня 2020

Вам просто нужно изменить if, чтобы оно было в начале понимания

def two_sum(numbers:list ,k:int) -> int:
    return (1 if x+y==k else 0 for x in numbers for y in numbers)

Когда вы используете if в конце понимания, просто проверьте, нужно ли добавлять элемент в результат.
В начале понимания проверяется элемент с помощью оператора if, и если условие истинно, то возвращается значение, иначе возвращается значение else.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...