簡體   English   中英

為什么我有無限循環?

[英]Why do i have infinite while loop?

我想將一個列表切割成給定長度的子列表(例如,讓它為 2)。 為了解決這個任務,我有第一個 while 循環用於列表中的索引和第二個 while 循環,計數器為 2。我確實在第二個 while 循環的每個循環中增加我的計數器,它仍然是無限的。 為什么?

list1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] 
i = 0 
chunk = 2 
list2 = [] 
while i < len(list1): 
    element = [] 
    counter = 0 
    while counter <= chunk: 
        element.append(list[i])
        counter += 1 
    list2.append(element) 
print(list2)

i在第 2 行設置為0 ,並且從未更改過。 因此, i < len(list1)將始終為True ,除非list1為空(這不是因為它在第 1 行初始化並且從未更改)。

我相信這是因為在你的第一個循環中,條件 i < len (list1) 永遠不會為真(即永遠為真)你的第二個循環將隨着計數器的增加而結束,所以最終 counter <= chunk 將是第一個循環,我永遠不會增加,所以它保持不變(所以 0 )因此永遠不會退出 while 循環

開放更正,因為我對 python 沒有太多經驗

因為在你的循環變量中我總是 0。

您永遠不會更新i的值,因此它始終為 0。只需將i += 1放在 while 循環的末尾,如下所示:

list1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] 
i = 0 
chunk = 2 
list2 = [] 
while i < len(list1): 
    element = [] 
    counter = 0 
    while counter <= chunk: 
        element.append(list[i])
        counter += 1 
    list2.append(element) 
    i += 1
print(list2)

Output:

[[list[0], list[0], list[0]], [list[1], list[1], list[1]], [list[2], list[2], list[2]], [list[3], list[3], list[3]], [list[4], list[4], list[4]], [list[5], list[5], list[5]], [list[6], list[6], list[6]]]

暫無
暫無

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

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