这个三元运算符

时间:2017-05-06 10:14:56

标签: python ternary-operator

我想将此函数从C编程为Python,但返回的条件很难转换:

在C:

int pos(int b) {
    char *r = strchr(a, b);
    return r?(r - a):-1;
}

这是我试过的:

def pos(b) :
    r = alphabet[a.rfind(b):]
    return r if (r - len(a)) else -1

r变量是相同的,但问题是三元运算符。 所以当然,它没有做同样的工作:/ 你能救我吗?

2 个答案:

答案 0 :(得分:7)

Python三元运算符的顺序与C三元运算符的顺序不同。 C三元运算符的格式为:

condition ? expr_if_true : expr_if_false

而Python的Python版本的形式为:

expr_if_true if condition else expr_if_false

答案 1 :(得分:0)

return r?(r - a):-1;

相同
if (r != NULL) return r - a;
else           return -1;