python - 从列表中获取特定值的范围
问题描述
目标: 从列表中获取整数的总和,除了忽略以 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]。
谢谢 !
解决方案
如果您想使用代码的一部分:
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
推荐阅读
- react-native - 为共享同一存储库的 99% 的移动应用程序推荐的部署策略?
- spring - 限制一页上数据库结果的可见性-spring boot
- python - 如何减少python-docx中段落之间的空间
- spring-boot - SpringBoot 不解析没有 PropertySource 注释的 @Value 属性
- eclipse-cdt - Eclipse CDT - 提供每个文件构建设置的哪个扩展点?
- c++ - CMake:如何使 add_custom_command 默认输出最新?
- paypal - 有什么方法可以代表客户添加跟踪信息?
- php - 将实时网站运行到本地主机 - magento 1.9.1.3
- c# - 将子属性失败添加到子项
- php - Microsoft Azure for MySQL 无法使用 PHP 连接到数据库