三元运营商

时间:2018-04-01 02:01:34

标签: python ternary-operator

我一直在解决编码挑战,并且能够非常简单地完成它们。但是,一旦我尝试将代码压缩为使用三元运算符的样式,就会出现问题。在这个问题中,我试图找到在数组中出现奇数次的整数。我用正常的,良好的练习形式做到这一点,一切都很好。

def find_it(seq):
for x in seq:
    if seq.count(x) % 2 == 1:
        return x

这有效,但是当我试图把它变成这样的东西时:

def find_it(seq):
for x in seq:
    return x if seq.count(x) % 2 == 1

几乎每次尝试三元运算符时都会出现此错误:

File "<string>", line 10
return x if seq.count(x) % 2 == 1
                                ^
SyntaxError: invalid syntax

问题是什么?为什么它总是说无效语法?

2 个答案:

答案 0 :(得分:0)

这是有效的:

return x if CONDITION

但那不是你想要的,不是吗?看来你原来的工作代码是最好的解决方案。

您尝试使用的return x if seq.count(x) % 2 == 1 else 0 语法在Ruby中有效,但在Python中无效。如果&#34;没有一般&#34;尾随。像Ruby中的支持(在大多数其他语言中都没有)。

答案 1 :(得分:0)

Location docs

Ternarys有一个&#34;答案,如果条件别的其他答案&#34; python中的格式。

如果x不在序列中,似乎你没有返回条件,所以可能会返回0 ??

w = String.fromCharCode(0x04a)