1

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

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

5 回答 5

5

这里的问题不是你需要一个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 循环是 for)。:

data = enumerate(list)
try:
    while True:
        n, val = next(data)
        if val < 0: negativeindices.append(n)
except StopIteration:
    return negativeindices
于 2012-09-26T22:02:18.233 回答
3

第一个答案是直截了当的方法,如果您对增加索引变量过敏,还有另一种方法:

def scrollList(myList):
  negativeIndices = []
  indices = range(0,len(myList)):
  while indices:
        i = indices.pop();
        if myList[i] < 0:
             negativeIndices.append(i)
  return negativeIndices
于 2012-09-26T21:55:21.017 回答
1

像这样:

def scrollList(myList):
      negativeIndices = []
      i = 0
      while i < len(myList):
            if myList[i] < 0:
                 negativeIndices.append(i)
            i += 1
      return negativeIndices
于 2012-09-26T21:27:49.277 回答
-1
def scrollList(myList):
      negativeIndices = []
      while myList:
          num = myList.pop()
          if num < 0:
             negativeIndices.append(num)
      return negativeIndices
于 2012-09-26T21:28:39.313 回答
-2

只需为循环设置一个变量并增加它。

int i = 0;
while(i<len(myList)):
    if myList[i] < 0:
        negativeIndices.append(i)
    i++;

return negativeIndices
于 2012-09-26T21:28:42.847 回答