使用for循环的函数,用于在达到特定数字之前对列表中的数字求和

时间:2018-09-30 22:12:51

标签: python python-3.x for-loop

我想使用for循环遍历数字列表,并在到达4之类的特定数字时停止,返回之前的数字之和。

因此,如果列表为[1, 2, 4, 0, 3, 2],则求和后该函数将返回3

2 个答案:

答案 0 :(得分:1)

有两种使用for循环的方式( with without 函数)。当元素为if时,for条件将脱离4循环,否则它将继续求和。从for循环中出来,您可以打印总和s

无功能

lst = [1, 2, 4, 0, 3, 2]
s = 0
for l in lst:
    if l == 4:
        break
    s += l

print ("The sum is %d" %s) 

> The sum is 3

具有功能

lst = [1, 2, 4, 0, 3, 2]
num = 4

def summ(lst, num):
    s = 0
    for l in lst:
        if l == num:
            return s
        s += l

print ("The sum is %d" %summ(lst, num))   

> The sum is 3

答案 1 :(得分:1)

您可以使用itertools.takewhile

from itertools import takewhile

res = sum(takewhile(lambda x: x < 4, [1, 2, 4, 0, 3, 2]))  # 3

docs for itertools.takewhile提供了等效生成器,可用于直接实现逻辑:

def takewhile(predicate, iterable):
    # takewhile(lambda x: x < 4, [1, 2, 4, 0, 3, 2]) --> 1 2
    for x in iterable:
        if predicate(x):
            yield x
        else:
            break