我是Python的新手,我需要将for
循环转换为while
循环,我不知道该怎么做。这就是我正在使用的:
def scrollList(myList):
negativeIndices = []
for i in range(0,len(myList)):
if myList[i] < 0:
negativeIndices.append(i)
return negativeIndices
答案 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