为什么我的 "while" 函数会导致无限循环?

Why is my "while" function causing an infinite loop?

我正在尝试创建一个函数来将列表中的所有值加倍。但是,当我 运行 时,我得到了一个无限循环。这是我的代码:

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

因为你的 I 在这个 while 循环中实际上从未增加过。如果你真的想这样做,你可以在函数的末尾添加一个 i += 1

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]))

您不会在 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