簡體   English   中英

While循環未退出Python

[英]While loop not exiting Python

給定輸入列表。 列表的最后一個x是我要用於測試的數字。 因此,開始的nx元素是我要使用x中的元素進行測試的元素。

例如:

test_case = [0.18677649597722776, 0.21992417009282958, 0.21001370207789635, 0.2576939078119566, -0.26790678064174844, 0.23723906040549575, 0.23796810219833633, 0.12311570730540798, 0.291222989748139, -0.46589179980005796, -0.5679935337540711, -0.541967302717414, 0.2797199715268191, -0.0462338707795437, 0.3352382038488532, -0.6395453091791992, -0.7116194799285872, -0.6827853559995019, 0.4131897184013285, 0.07125041194386302, 0.47179441094288416, -0.5670171363969451, -0.6493889334859158, -0.6214861349381114, 0.6332084272531783, 0.2946607775328391, 0.7252115985158697, -0.48494480580385074, -0.5584250339723696, -0.5329318548632481, 0, 1, 0, 5, 5, 5]

我想在前30個數字中作為測試的一部分使用最后6個數字。 我想循環顯示30個數字,以便當test_case[31] < 3 ,給我test_case[0] ,否則給我-999 如此反復直到test_case[36] < 3 ,給我test_case[5] 然后,我希望test_case[31]返回並在test_case[6]並再次循環。

test_case[30] ,我希望它停止。

這是我所擁有的:

def test_inputs(x, comp_size):
    counts = x[-comp_size:]
    inputs = x[:(len(x)-comp_size+1)]
    counts_pos = 0
    inputs_pos = 0
    while inputs_pos < (len(x)-comp_size+1):
        if counts_pos == 6:
            counts_pos = 0
        if counts[counts_pos] < 3:
            x.append(inputs[inputs_pos])
            print inputs_pos
            print counts_pos
            inputs_pos += 1
            counts_pos += 1
        else:
            x.append(-999)
            print inputs_pos
            print counts_pos
            inputs_pos += 1
            counts_pos += 1

我試圖做一個廣義的功能。 在這種情況下,應該能夠運行:

test_inputs(test_case, 6)

但是,這不會在inputs_pos == 31處停止。 我輸入了打印語句,看起來它一直在運行。

有使用過濾器的更簡單方法嗎?

我是否正確理解您想要的:

from itertools import cycle
def test_inputs(x, comp_size):
    return [(input if count<3 else -999) for (input,count)
            in zip(x[:-comp_size], cycle(x[-comp_size:]))]

您可以使用x.extend而不是return來還原就地修改行為。 由於切片是在擴展調用之前執行的,因此它將產生完全相同的項目。 盡管如此,我認為將數據類型混合在一個這樣的列表中通常不是一個好主意,因為這樣容易傳遞(inputs,counts)元組。

循環不會停止,因為len(x)在每次迭代時都會求值。 在循環中,您增加count_pos並將新元素附加到x

暫無
暫無

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

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