首页 > 解决方案 > 我怎样才能返回 1 else 0

问题描述

**我有这个函数,如果其中任何两个数字的总和等于列表中的另一个数字,则该函数返回 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)

**但我不断收到无效的语法错误。有什么帮助吗?**

标签: pythonpython-3.x

解决方案


您只需将 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语句检查元素,如果条件为 True,则返回值,否则返回else值。


推荐阅读