簡體   English   中英

Python 循環 While 直到條件滿足

[英]Python Loop While Until Condition Is Met

我正在嘗試創建一個 while 或 if 循環來按順序逐步執行一個列表,以返回值更改之前所需的步驟數。 這是我的列表示例。 對於第一項(通過 47),循環會輸出 1。對於前 39 項,循環會輸出 3,對於第二個 39 會輸出 2,對於第三項會輸出 1。然后對於前 31 個它會放 5,然后接下來的 31 個它會放 4,依此類推。

我不確定如何做到這一點,以及是否可以使用 while 循環來完成。 我認為它可以通過一個從 1 開始的迭代器/計數器來完成,然后逐步增加 (+= 1) 直到值發生變化。 我認為這將是一個 'while list[orig index] == list[orig + iterator index],迭代計數器並測試是否相等。 也就是說,我不知道 while 循環如何使用新的“迭代器”值再次評估原始真實條件。

list1 = [[[81, 79, 74, 57, 47, 39, 39, 39, 31, 31, 31, 31, 31, 30, 27, 22, 20,

您可以使用 numpy 數組來迭代條件。 例如:

#Array to check
x = np.array([81, 79, 74, 57, 47, 39, 39, 39, 31, 31, 31, 31, 31, 30, 27, 22, 20])
#Counts
y = np.ones(x.shape)

#Loop for each gap, check for equality, and add to y
for i in range(1, x.shape[0]):
    y[:-i] = np.where(x[:-i]==x[i:], y[:-i]+1, y[:-i])
print(y)

這應該產生:

>>> [1. 1. 1. 1. 1. 3. 2. 1. 5. 4. 3. 2. 1. 1. 1. 1. 1.]

還有許多其他方法可以做到這一點,因此您也可以探索其他選項。

暫無
暫無

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

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