我有一个列表,我想对列表中的所有数字求和...... 除非出现 6 - 不计算 6 中的任何数字,直到下一个 7 出现(也不计算 7 )。7 总是会出现在 6 之后的某个地方。例如:my_list = [1,2,3,6,1,1,1,7,2,2,2] 1,2,3,.........,2,2,2 # Omit numbers from the first 6 to the next 7.应该输出12。我知道如何识别 6,我只是不确定如何在后续 7 到来之前不计算数字。
2 回答
慕标5832272
TA贡献1966条经验 获得超4个赞
让我们像在纸上一样这样做:
找到第一个6;将列表标记到该点。
在列表的其余部分,找到前 7 个;在该点之后标记列表。
合并两个标记的列表部分;总结这些元素。
代码,带有一行跟踪输出:
seq = [1, 2, 3, 6, 1, 1, 1, 7, 2, 2, 2]
first6 = seq.index(6)
rest = seq[first6:]
next7 = rest.index(7)
sum_list = seq[:first6] + rest[next7+1:]
print("Add these:", sum_list)
print("Sum:", sum(sum_list))
输出:
Add these: [1, 2, 3, 2, 2, 2]
Sum: 12
您可以通过组合表达式来缩短代码,但我认为在您的编程生涯的这个阶段,这对您来说更具可读性。
添加回答
举报
0/150
提交
取消