我有一个列表,我想对列表中的所有数字求和... 除外,如果出现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到来之前如何不对数字进行计数。
谢谢。
答案 0 :(得分:1)
您可以使用布尔值作为标志。应该这样做:
list= [1,2,3,6,1,1,1,7,2,2,2]
do_sum = True
total_sum = 0
for item in list:
if item == 6:
do_sum = False
if do_sum:
total_sum += item
if not do_sum and item == 7:
do_sum = True
最后一个if将检查6是否在7之前。因此,它将求和出现在6之前的任何七个。
此解决方案支持列表中的六七对七的多种情况。
答案 1 :(得分:0)
让我们像在纸上一样做到这一点:
6
;标记该列表。代码,带有一行跟踪输出:
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
您可以通过组合表达式来缩短代码,但是我认为这对于您在编程生涯的现阶段来说更具可读性。