我不理解这个Python的句子,如果尾巴是其他的话。

时间:2014-09-28 14:40:42

标签: python python-3.x

我是从 Python Cookbook 中看到的:

def sum(items):
    head, *tail = items
    return head + sum(tail) if tail else head
items = [1, 10, 7, 4, 5, 9]
print(sum(items)) #36

它说它是一种聪明的递归算法。

4 个答案:

答案 0 :(得分:6)

这是conditional expression

A if PREDICATE else B

如果PREDICATE为真,则产生A,否则产生B.

>>> 'A' if 1 < 2 else 'B'
'A'
>>> 'A' if 1 > 2 else 'B'
'B'

答案 1 :(得分:3)

sum(tail)也是表达的一部分 该表达式的结构是:

result = Val1 if condition else Val2

它相当于:

if (condition):
    result = Val1
else:
    result = Val2

答案 2 :(得分:1)

换句话说,它可以写成:

if tail:
    return head + sum(tail)
else:
    return head

答案 3 :(得分:0)

可以改写如下:

def sum(items):
    head + *tail = items
    while tail:
        return head + sum(tail)
  1. 1(头部)+总和(尾部) - 作为新项目
  2. 1 + 10(头部)+总和(尾部)
  3. 1 + 10 + 7(头部)+总和(尾部)
  4. 1 + 10 + 7 + 4(头部)+总和(尾部)
  5. 1 + 10 + 7 + 4 + 5(头)+总和(尾)
  6. 1 + 10 + 7 + 4 + 5 + 9(头) - 不再有尾巴