如何在python中检查列表中的连续负数或正数以及条件?

2024-04-20 07:10:48 发布

您现在位置: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.

请帮忙,我不知道如何在条件中应用这个条件。你知道吗


Tags: answerdevifcountcounterveplus条件
1条回答
网友
1楼 · 发布于 2024-04-20 07:10:48

当您有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

相关问题 更多 >