将for循环转换为while循环

时间:2012-09-26 21:22:08

标签: python python-3.x

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

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

5 个答案:

答案 0 :(得分: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循环的目的)。:

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

答案 1 :(得分:3)

The first answer是直截了当的方式,如果你对增加索引变量过敏,还有另外一种方法:

def scrollList(myList):
  negativeIndices = []
  indices = range(0,len(myList)):
  while indices:
        i = indices.pop();
        if myList[i] < 0:
             negativeIndices.append(i)
  return negativeIndices

答案 2 :(得分:1)

像这样:

def scrollList(myList):
      negativeIndices = []
      i = 0
      while i < len(myList):
            if myList[i] < 0:
                 negativeIndices.append(i)
            i += 1
      return negativeIndices

答案 3 :(得分:-1)

def scrollList(myList):
      negativeIndices = []
      while myList:
          num = myList.pop()
          if num < 0:
             negativeIndices.append(num)
      return negativeIndices

答案 4 :(得分:-2)

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

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

return negativeIndices