关于python for循环和枚举的基本问题

时间:2021-01-19 12:18:05

标签: python

我正在尝试构建一个函数,该函数将返回数据列表中的第一项和之后的每十项之和,因此我编写了下面的脚本,但是,结果始终是我的列表中的第一个数据。我应该如何修改我的代码并修复它?

def Sum10th(data):
  sum=0
  for i,d in enumerate(data):
    if (i % 10 == 0): sum = sum+d
    return sum

p = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
print(Sum10th(p))

想要的结果应该是 31,但是计算机只返回值 1。

2 个答案:

答案 0 :(得分:1)

你可以试试

p = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
def Sum10th(data):
    return sum([v for i, v in enumerate(p) if (i + 1) % 10 == 0 or i == 0])

print(Sum10th(p))

输出

31

通过将列表推导式与 if 结合使用,在它的末尾,您可以获取列表中的所有第一项以及其后的第十项。

答案 1 :(得分:0)

试试这个方法:

def sum10thdata(data):
     sum = 0
     l = len(data)
     for i in range(0,l,10):
        sum+=data[i]
     return sum