首页 > 解决方案 > 从列表中获取特定值的范围

问题描述

目标: 从列表中获取整数的总和,除了忽略以 6 开头并延伸到下一个 9 的数字部分(每个 6 后面至少有一个 9)。如果没有数字,则返回 0。

输入主列表

a=[4, 5, 6, 7, 9,2, 6,8,9]

到目前为止我的代码

z6_ind=[]
z9_ind=[]
z69_ind=[]
x=None

for i,v in enumerate(a):
    if v==6:
        z6_ind.append(i)
    if v==9:
        z9_ind.append(i)

print(z6_ind. z9_ind)

我的想法是根据单独的列表获取主列表的索引(例如,z6_ind、z9_ind,最后是有问题的 z69_ind,它应该包含 [[2,4],[6,8]] 的范围,应该总和计算时从主列表中排除。

根据上面的脚本,它给出 z9_ind 等于 [4, 8] 而 z6_ind 等于 [2, 6]。

谢谢 !

标签: pythonpython-3.x

解决方案


如果您想使用代码的一部分:

a_sum = sum(a)
to_reduce = 0
for (bot,top) in zip(z6_ind, z9_ind):
    to_reduce += sum(a[bot:top+1])

基本上 zip “对”两个索引并获得它们之间的总和 - 你想通过以下方式减少 a_sum 的数字:

result = a_sum - to_reduce

推荐阅读