繁体   English   中英

如何在此 IF 条件下从列表的总和中获取特定索引?

[英]How to get the specific index from sum of the list over this IF-condition?

我想将每个索引的值向后求和,直到它到达“上限”并从最后一个值中获取一个索引并使用迭代索引 x 打印它(实际上,x 应该从 1 开始)

total = 0 
cap = 30   
myArray = [1,2,3,4,5,6,7,8,9,10]
myArray.reverse()

for x in range(len(myArray)):
    total = total + myArray[x]
    if total >= cap:
        print(x,total)
    break

无需reverse() ,您可以向后迭代:(我在条件内移动了break

total = 0
cap = 30
myArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

for x in range(len(myArray) - 1, - 1, -1):
    total += myArray[x]
    if total >= cap:
        print(x, total)
        break

Output: 6 34

如另一个答案所示,它是break的缩进。

这是使用enumeratereverse的替代方法:

total = 0 
cap = 30   
myArray = [1,2,3,4,5,6,7,8,9,10]

for idx, val in enumerate(reversed(myArray)):
    total += val
    if total >= cap:
        print(idx, total)
        break

在第二次阅读时,我不确定你想要什么索引。 数组 position 或 for 循环中的迭代次数?

为了回答您的问题,您将break放在if条件之外,

total = 0 
cap = 30   
myArray = [1,2,3,4,5,6,7,8,9,10]
myArray.reverse()

for x in range(len(myArray)):
    total = total + myArray[x]
    if total >= cap:
        print(x,total)
        break

Output:

3 34

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM