while i < len(myList):
if myList[i] < 0:
i = i + 1
negativeIndices.append(i)
假设条件myList[i] < 0
不成立。在这种情况下,i
不会增加,也不会发生其他任何事情。因此,您将在下一次迭代中结束,具有相同的值i
和相同的条件。永远,无限循环。
i
无论您是否匹配某些内容,您都希望增加。因此,您必须将增量放在if
条件之外。此外,您希望在将索引附加到列表i
后递增,因此您实际上附加了您测试的索引,而不是之后的索引:
while i < len(myList):
if myList[i] < 0:
negativeIndices.append(i)
i = i + 1
此外,您通常会for
在此处使用循环。它会自动为您i
提供索引中每个元素所需的所有值myList
。它是这样工作的:
negativeIndices = []
for i in range(len(myList)):
if myList[i] < 0:
negativeIndices.append(i)
range(len(myList))
将为您提供从零到列表长度(不包括长度本身)的每个数字的值序列。因此,如果您的列表包含值,4
您将获得值0
、1
和for 。所以你不需要自己增加它。2
3
i
另一种可能性是enumerate
Foo Bar User 提到的。该函数将在您的情况下采用序列或列表,并同时为您提供索引和值:
negativeIndices = []
for i, value in enumerate(myList):
if value < 0:
negativeIndices.append(i)
如您所见,这完全消除了通过索引访问列表的需要。