[英]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.