我正在尝试编写一个迭代列表的代码,如果i%10等于1,那么我将i
存储在一个变量中。然后,我希望我的代码继续遍历列表,如果另一个i值满足与添加到计数相同的要求。
这就是我现在所拥有的,但它只是保存一个i值而不是添加一个计数。这是因为我想成为下一个我的价值只是符合我要求的第一个i值。
count 1_1 = 0
for i in B:
if some_reqirement:
if some_other_reqirement:
if (old == 1) and (i % 10 == 1):
count1_1 += 1
old = i % 10
有谁知道如何解决这个问题?
编辑:
这是带有要求的代码,我已经测试了其余的代码,并且它的工作方式也是如此。
A是使用值1替换某些值的范围,b只是一个范围。
count1_1 = 0
for i in B:
if B[i] % 10 == 1 and B[i + 2] % 10 == 3:
if A[i] * A[i + 2] == 1:
if (old == 1) and (i % 10 == 1):
count1_1 += 1
old = i % 10
答案 0 :(得分:1)
您过早保存旧值
old = i % 10
if (old == 1) and (i % 10 == 1):
count1_1 += 1
应该是
if (old == 1) and (i % 10 == 1):
count1_1 += 1
old = i % 10
或old
和i % 10
相同:不是您想要的(因为if
的两个表达式都测试相同的内容)
答案 1 :(得分:0)
我仍然认为old
本质上是一个布尔标志,所以让它成为一个(称为previous_1
),但这一次,我们不是只触发一次真实的,而是一次。将根据通过两个要求的每个i
更改它的值:
count1_1 = 0
previous_1 = False
for i in B:
if B[i] % 10 == 1 and B[i + 2] % 10 == 3:
if some_other_reqirement:
current_1 = i % 10 == 1
if current_1 and previous_1:
count1_1 += 1
previous_1 = current_1