簡體   English   中英

為什么我的“while”function 會導致無限循環?

[英]Why is my "while" function causing an infinite loop?

我正在嘗試創建一個 function 來將列表中的所有值加倍。 但是,當我運行它時,我得到了一個無限循環。 這是我的代碼:

def double_values_in_list ( ll ): 
    i = 0
    while ( i < len(ll) ): 
        ll[i] = ll[i] * 2 
        print ( "ll[{}] = {}".format( i, ll[i] ) )
    return ll

您在 while 循環內的任何時候都沒有增加i因此您的i將始終保持為 0,因為您在開始時用 0 初始化了它,因此i將始終小於列表ll的長度,因此是無限循環

考慮像這樣替換你的方法

def double_values_in_list ( ll ): 
    i = 0
    while ( i < len(ll) ): 
        ll[i] = ll[i] * 2
        print ( "ll[{}] = {}".format( i, ll[i] ) )
        i = i + 1
    return ll

因為你的 I 在這個 while 循環中實際上從未增加過。 如果你真的想這樣做,你可以將 ai += 1 添加到 function 的末尾

def double_values_in_list ( ll ): 
    i = 0
    while (i<len(ll) ): 
        ll[i] = ll[i] * 2 
        print ( "ll[{}] = {}".format( i, ll[i] ) )
        i += 1
    return ll

print(double_values_in_list([1, 2]))

但是,這是您不需要執行的許多額外步驟,您可以簡單地運行一個 pythonic for 循環來讓事情變得容易得多

def double_values_in_list (ll): 
    return [x*2 for x in ll]
    

print(double_values_in_list([1, 2]))

暫無
暫無

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

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