这是原始代码:
def scrollList(myList):
negativeIndices = []
for i in range(0,len(myList)):
if myList[i] < 0:
negativeIndices.append(i)
return negativeIndices
这是我到目前为止所得到的:
def scrollList2(myList):
negativeIndices = []
needMoreNumbers = True
while (needMoreNumbers):
if myList[i] < 0:
negativeIndices.append(i)
n = n-1
if (n<1):
needMoreNumbers = False
return negativeIndices
现在我收到错误“全局名称'我没有定义,我知道它不是,但我不知道如何在没有for循环的情况下定义'i'。谢谢
答案 0 :(得分:1)
您在i
上收到全局错误的原因是您没有在任何地方定义它。您必须定义您使用的内容。您还没有定义变量n
。修好i
后,你也会收到错误。
因此,在n
循环前面定义while
,如此
n = len(myList)
while(needsMoreStuff):
并将i
的引用更改为
if myList[n] < 0:
negativeIndices.append(n)
应该足以解决您的错误。
修改强>:
建议使用不同的循环结构,然后对其进行编辑以更符合问题。问题是一个未声明的变量。
答案 1 :(得分:0)
只需使用计数器变量进行模拟:
def scrollList2(myList):
negativeIndices = []
counter = 0
while (counter < len(myList)):
if myList[counter] < 0:
negativeIndices.append(counter)
counter += 1
return negativeIndices
答案 2 :(得分:0)
好吧,你可以尝试手动进行索引。
def scrollList2(myList):
negativeIndices = []
index = 0
while (index < len(myList)):
if myList[index] < 0:
negativeIndices.append(index)
index+=1
return negativeIndices
答案 3 :(得分:0)
pythonic答案是
indices = [i for i,n in enumerate(mylist) if n<0]
或使用()代替[]代替生成器(逐个动态生成它们)