Python如果条件继续解析

时间:2016-11-09 13:18:41

标签: python

这是我的python脚本:

mock_data = ((23020, "in0"),
             (23000, "in1"),
             (23020, "in2"),
             (0, "in3"),
             (23060, "in4"),
             (23080, "in5"),
             (23100, "in6"),
             (0, "in7"))
mock_len = len(mock_data)
epsilon = 20
max_data = 0
isInInterval = True
for i in range(mock_len - 1):
    if isInInterval == True:
        if mock_data[i+1][0]-mock_data[i][0] == 20:
            max_data = mock_data[i+1][0]
            isInInterval = False
            print max_data
    if max_data != 0 and mock_data[i][0]==0:
        isInInterval = True

输出:

23020
23080

但是当我将数据更改为:

mock_data = ((23020, "in0"),
             (23000, "in1"),
             (23020, "in2"),
             (0, "in3"),
             (23060, "in4"),
             (23080, "in5"),
             (23100, "in6"),
             (10, "in7"),
             (100,"int8"),
             (1000,"int9"),
             (1020,"int10"),
             (300,"int11"))

我当前代码的输出仍然与上面相同,但我还要打印1020:

23020
23080
1020

我的代码中最好的变化是覆盖这种情况,因为当我从0开始时,我的标记才会生效。

1 个答案:

答案 0 :(得分:0)

例如,我是否会这样做:



mock_data = ((23020, "in0"),
             (23000, "in1"),
             (23020, "in2"),
             (0, "in3"),
             (23060, "in4"),
             (23080, "in5"),
             (23100, "in6"),
             (10, "in7"),
             (100,"int8"),
             (1000,"int9"),
             (1020,"int10"),
             (300,"int11"))
mock_len = len(mock_data)
epsilon = 20
max_data = 0
isInInterval = True
for i in range(mock_len - 1):
    if isInInterval == True:
        if mock_data[i+1][0]-mock_data[i][0] == 20:
            max_data = mock_data[i+1][0]
            isInInterval = False
            print max_data
    if max_data != 0 and mock_data[i+1][0]>mock_data[i][0]+ 300:
        isInInterval = True




而不是如果max_data!= 0和mock_data [i] [0] == 0:我做了如果max_data!= 0和mock_data [i + 1] [0]&gt ; mock_data [i] [0] + 300:但我不这是最好的方法。基本上我想以pythonic的方式改变那面旗帜,以便在遇到0时我不必将我的旗帜重置为True。