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