簡體   English   中英

如何檢查列表中的連續負數或正數以及python中的條件?

[英]How to check continuous negative or positive number inside a list along with a condition in python?

給定數據:

list =[-2,-2,-1,-2,-5,-6,-7,-5,-12,-2,-6,-54,-7,-2,3,2,5,68,68,1,5,3,9,7,-1,-1,-4,-4,-6,-7,-8,8]

在這個列表中,我想計算連續 7 -(ve) 或 +(ve) 的數量,同時我想應用一個條件來查看這些數字是否連續超過 7 個連續項。

  1. 假設連續超過 7 次的負項數,那么您將從第 7 個 -(ve) 值開始計數,而不是從下一個值開始。

  2. 並且假設如果有 7 個連續的 -(ve) 項,但是在第 7 個 -(ve) 項之后,有一個 +(ve) 項,那么您將從第 7 個 -(ve) 項之前的下一個項開始計數。

我寫了一個程序,可以完成大部分工作。 除了這部分,條件看連續性是否仍然存在。

我的代碼:

dev = [-2,-2,-1,-2,-5,-6,-7,-5,-12,-2,-6,-54,-7,-2,3,2,5,68,68,1,5,3,9,7,-1,-1,-4,-4,-6,-7,-8,8]
counts = []
plus_counter = 0
minus_counter = 0
row_counter = 0
answer_counter = 1
for each in dev:

    if each > 0:
        minus_counter = 0
        plus_counter += 1

        if plus_counter == 7:
            count = answer_counter
            row_counter = answer_counter
            counts.append(count)
            plus_counter = 0
            answer_counter += 1

        else:
            counts.append(0)

    elif each < 0:
        plus_counter = 0
        minus_counter += 1

        if minus_counter == 7:
            count = answer_counter
            row_counter = answer_counter
            counts.append(count)
            minus_counter = 0
            answer_counter += 1

        else:
            counts.append(0)

    row_counter += 1
print("list: ", dev)
print("counter: ",counts)

輸出:

("list: " -2,-2,-1,-2,-5,-6,-7,-5,-12,-2,-6,-54,-7,-2,3,2,5,68,68,1,5,3,9,7,-1,-1,-4,-4,-6,-7,-8,8)
("counter: " 0,0,0,0,0,0 ,1,0,0,0,0,0,0,2,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,4,0)

期望的輸出:

("list: " -2,-2,-1,-2,-5,-6,-7,-5,-12,-2,-6,-54,-7,-2,3,2,5,68,68,1,5,3,9,7,-1,-1,-4,-4,-6,-7,-8,8)
("counter: " 0,0,0,0,0,0,1,0,0,0,0,0,"2",0,0,0,0,0,0,"3",0,0,0,0,0,0,0,0,0,0,4,0)

我標記了“2”和“3”,因為這是我犯錯誤的地方。 如果連續性質仍然持續到接下來的連續 7 個任期,我希望我的計數器從相同的第 7 個數字開始。

這是實際的差異,在我的輸出“2”是在連續第 14 個學期之后出現的,因為我從第 7+1 個學期開始計算它,但是所需的輸出“2”是在第 13 個連續學期出現的,因為從第 7 個學期開始計數。

NOTE: "4" is at the right place because counter is reset if the continuity breaks.

請幫忙,我不知道如何在條件內應用此條件。

當你有plus_counter == 7: ,只需重新初始化plus_counter = 1而不是plus_counter = 0 minus_counter相同。

if plus_counter == 7:
    count = answer_counter
    row_counter = answer_counter
    counts.append(count)
    plus_counter = 1 # HERE IS THE DIFFERENCE
    answer_counter += 1

[...]

if minus_counter == 7:
    count = answer_counter
    row_counter = answer_counter
    counts.append(count)
    minus_counter = 1 # HERE IS THE DIFFERENCE
    answer_counter += 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM