我是 Python 新手,我需要将for
循环转换为while
循环,但我不知道该怎么做。这就是我正在使用的:
def scrollList(myList):
negativeIndices = []
for i in range(0,len(myList)):
if myList[i] < 0:
negativeIndices.append(i)
return negativeIndices
我是 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 循环是 for)。:
data = enumerate(list)
try:
while True:
n, val = next(data)
if val < 0: negativeindices.append(n)
except StopIteration:
return negativeindices
第一个答案是直截了当的方法,如果您对增加索引变量过敏,还有另一种方法:
def scrollList(myList):
negativeIndices = []
indices = range(0,len(myList)):
while indices:
i = indices.pop();
if myList[i] < 0:
negativeIndices.append(i)
return negativeIndices
像这样:
def scrollList(myList):
negativeIndices = []
i = 0
while i < len(myList):
if myList[i] < 0:
negativeIndices.append(i)
i += 1
return negativeIndices
def scrollList(myList):
negativeIndices = []
while myList:
num = myList.pop()
if num < 0:
negativeIndices.append(num)
return negativeIndices
只需为循环设置一个变量并增加它。
int i = 0;
while(i<len(myList)):
if myList[i] < 0:
negativeIndices.append(i)
i++;
return negativeIndices