python3从列表中汇总

时间:2017-09-06 11:56:19

标签: python-3.x

def check_pnr (a):
    for i in range (len (a)):
        if i % 2 == 0:
            res1 = a[i] * 2
            res2 = (res1 % 10) + (res1 // 10)

伙计我是python的新手,我刚刚开始学习它,希望你能帮忙解决这个问题。 你如何得到我从res2获得的数字总和?

1 个答案:

答案 0 :(得分:1)

快速修复:

  • 累积而不是分配(在循环前设置为0)
  • 返回值(循环外部,一如既往地小心缩进)

代码:

def check_pnr (a):
    res2 = 0
    for i in range (len (a)):
        if i % 2 == 0:
            res1 = a[i] * 2
            res2 += (res1 % 10) + (res1 // 10)
    return res2

记录&这件事的美妙之处,我会用嵌套的生成器理解和sum在一行中写出来:

def check_pnr(a):
    return sum((res1 % 10) + (res1 // 10) for res1 in (a[i]*2 for i in range(0,len(a),2)))

(请注意,使用range中的步骤可以保存偶数测试)