Skip to main content
 首页 » 编程设计

python之将 for 循环转换为 while 循环

2025年05月04日21lidabo

我是 Python 新手,我需要将 for 循环转换为 while 循环,但我不确定该怎么做。这就是我正在使用的:

def scrollList(myList): 
      negativeIndices = [] 
      for i in range(0,len(myList)): 
            if myList[i] < 0: 
                 negativeIndices.append(i) 
      return negativeIndices 

请您参考如下方法:

这里的问题不是你需要while循环,而是你应该正确使用python for循环。 for 循环导致集合迭代,在您的代码中,是一个整数序列。

for n, val in enumerate(mylist): 
    if val < 0: negativeindices.append(n) 

enumerate 是一个内置函数,它生成 (index, value) 形式的对序列。

您甚至可以通过以下方式以函数式风格执行此操作:

[n for n, val in enumerate(mylist) if val < 0] 

这是用于此类任务的更常用的 Python 惯用语。它的优点是您甚至不需要创建显式函数,因此该逻辑可以保持内联。

如果您坚持使用 while 循环执行此操作,这里有一个利用 python 迭代功能的循环(您会注意到它本质上是上述循环的手动版本,但是嘿,情况总是如此,因为这就是 for 循环的用途)。:

data = enumerate(list) 
try: 
    while True: 
        n, val = next(data) 
        if val < 0: negativeindices.append(n) 
except StopIteration: 
    return negativeindices