为什么我的条件表达式会出现语法错误?

时间:2016-06-29 02:25:14

标签: python

def singleNumber(nums):
    for num in set(nums):
         return num if nums.count(num) != 2 #error occurs here

print(singleNumber([1,1,4,5,5]))

这遵循通常的python条件表达式格式。我不明白为什么它会在这里给我一个语法错误。

此功能的目的是找到不会发生两次的数字。

3 个答案:

答案 0 :(得分:3)

如果您要实际执行return,无论如何都必须返回

所以你可以尝试

return num if nums.count(num) != 2 else None

但是,在这种情况下,这不会起作用,因为它将返回首先检查,而不是检查所有所需的元素。

换句话说,假设检查的第一个元素是1中的第一个[1,1,4,5,5]。可以看出,数组中有两个该值的副本,然后返回None,跳过剩下的元素。

我可能会把它重写为:

if nums.count(num) != 2: return num

基本上可以满足您的需求,如果显式返回某些内容(即所有值都出现两次),调用者在函数中隐式获取None退出。

如果您是不喜欢隐式内容的类型,您可以在函数末尾显式添加return None,但这不是必需的。

答案 1 :(得分:0)

因为如果条件为假,你忘了写下结果应该是什么。

return num if nums.count(num) != 2 else ...what?

如果你不想那样,那么你应该写一个正常的if语句。

答案 2 :(得分:0)

当您使用三元条件运算符时,if和else部分都是必需的。

return num if nums.count(num) != 2 else <missing???>