2016-11-22 86 views
0

我必須編寫一個只要while循環爲true就會執行的函數。這個while循環的條件是我的列表中可能沒有零。但是如果我的列表包含一個不爲零的元素,並且所有其他元素都爲零,這不是問題。 我舉一個例子:[0,0,0] - >停止執行; [0,1,0,0,0] - >繼續執行while循環python中的所有方法

這是我的代碼:

while all(char != 0 for char in list): 
list = next(list) 
finallist.append(list) 

(接下來是我的函數的名稱)

謝謝

+0

條件是否爲零?還是不僅零?這是兩件完全不同的事情。 –

+0

使用'.index()'? – nicovank

回答

0

過濾列表從零:

[x for x in your_list if x != 0] 

然後,檢查如果過濾的列表i的長度s的0(或只是把它放在一個條件,導致空列表是False和非空名單True

while [x for x in your_list if x != 0]: 
    # Do stuff 

編輯:我重讀你的問題,發現你在哪裏錯了,
凡使用all(),你檢查列表包含是不爲0的元素,而你確實有檢查,如果該列表中有任何元素是不爲0。對於這一點,使用any()而不是all()

1

你的措辭令人困惑,因爲它看起來像你要求矛盾的條件,但根據你的例子,我相信你想要的是你的列表中至少有一個非零。在這種情況下,答案僅僅是在代碼中用any代替all

此外,我會避免將您的函數next命名,因爲它與內置於Python中的next函數發生衝突。

+0

我會嘗試重新解釋它。 1)我說荷蘭語,所以我把我的功能'volgende'翻譯成'下一個',以便說清楚。 2)也許我忘了,如果我的列表不包含零,我的函數也必須執行,所以any()方法將不起作用。這種情況導致該功能在這樣的列表上不起作用:[1,2,3]。唯一必須在while循環中返回False的列表是隻包含零的列表。 –

+0

你在說什麼?在這種情況下,'any'函數可以很好地工作。嘗試在Python解釋器中輸入'any(char!= 0 for char in [1,2,3])''。結果是「真」。除非我誤解了你,並且你說你至少需要一個非零和至少一個零,在這種情況下,只需複製該表達式,將'!='改爲'==',然後加入它們與'和'。 – user3030010