Python用一段时间总结列表的整数

时间:2013-08-17 15:33:04

标签: python

我需要帮助来创建一个函数sumOfPositiveNumbers(li)。一个返回列表中所有正整数之和的函数,该函数应使用while循环。

2 个答案:

答案 0 :(得分:5)

def sumOfPositiveNumbers(li):
    while True:
        return sum(i for i in li if i > 0)

虽然我更喜欢以下函数,因为它不使用sum,而是仅使用lambda表达式

def sumOfPositiveNumbers(li):
   while True:
       return ((lambda f: (lambda x: x(x))
           (lambda y: f(lambda a: y(y)(a))))
           (lambda f: lambda a: len(a) and 
           (a[0] > 0) * a[0] + f(a[1:])))(li)

答案 1 :(得分:0)

我做了一个非常简单的while循环,就像你问的那样:

def sumOfPositiveNumbers(li):
    total = 0
    index = 0
    while index < len(li):
        num = li[index]
        if num > 0:
            total += li[index]
        index += 1
    return total

但我必须说,这项工作可以做得更好:

def sumOfPositiveNumbers(li):
    return sum(x for x in li if x > 0)

除非你必须使用while循环,否则使用one循环是没有意义的。除了浪费更多打字/时间外,它什么也没做。