我是 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
