Python 迭代列表,保留一些实体

Python 迭代列表,保留一些实体,python,list,sanity-check,Python,List,Sanity Check,我试图重写现有列表,并跳过列表中值[I]=-1的任何索引,将该值保留在正确的索引处 一个问题是,最后一个_项的值似乎环绕在列表的末尾,有没有办法防止这种情况发生?否则,有没有更好的方法?这在逻辑上似乎太笨拙了 数据如下所示: -1 1 2 3 -1 1 2 3 我想让它看起来像这样: -1 1 2 3 -1 4 5... 编辑 我修改了Alex在下面发布的代码,现在工作得很好。以下是我使用的代码: count = 1 for i range(len(my_list)):

我试图重写现有列表,并跳过列表中
值[I]=-1
的任何索引,将该值保留在正确的索引处

一个问题是,最后一个_项的值似乎环绕在列表的末尾,有没有办法防止这种情况发生?否则,有没有更好的方法?这在逻辑上似乎太笨拙了

数据如下所示:

-1
 1
 2
 3
-1
 1
 2
 3
我想让它看起来像这样:

-1
 1
 2
 3
-1
 4
 5...
编辑 我修改了Alex在下面发布的代码,现在工作得很好。以下是我使用的代码:

count = 1
for i range(len(my_list)):
    if my_list[i] == -1:
        new_list.append(-1)
    else:
        my_list[i] = count
        count += 1
        new_list.append(my_list[i])

在开始编写这段代码之前,您可能希望大致了解python列表、python循环和迭代/索引。这里有一些你可能会觉得有用的页面

另一个注意事项是,仅仅因为您将一个变量设置为列表中的一个元素,所以如果您更改该变量,就不能期望该列表中的元素发生更改。这就像是说,我要做一个曲奇的复制品,它的外观和味道和另一个曲奇一样。然后,如果你吃了第二块饼干(你做的那块),第一块饼干仍然存在,直到你进去吃那块饼干

迭代变量i也是如此。当你检查i==-1时,你实际上只是说“这是我循环中的第一个循环吗?”因为你是从-1开始循环的。当您浏览这些循环文章时,这一切应该更有意义

太棒了,输入/输出数据帮助很大。现在它更有意义了

这个怎么样:

count = 1
for i range(len(my_list)):
    if my_list[i] = -1:
        continue
    else:
        my_list[i] = count
        count++
其中
my_list
是输入列表


我不是100%理解这个问题,但我想我理解。在给定输入的情况下,这段代码应该为您提供所需的输出。HTH

你能举一个预期输入和输出的例子吗?你不是在修改数据,只是在修改下一项,然而,很难说你在做什么。欢迎使用I/O示例!您也没有检查索引i中的-1的值,而是检查i本身。这没有多大意义,因为您是从i=-1声明性开始循环的,所以这项工作是为您完成的吗?确实是谢谢您。我更新我的帖子以反映这些变化。我的实现很愚蠢,但现在它变得更有意义了。