控制Python for循环的索引

Jor*_*oll 3 python for-loop

如何控制python for循环的索引?(或者可以吗?还是应该吗?)

例如:

for i in range(10):
    print i
    i = i + 1
Run Code Online (Sandbox Code Playgroud)

产量:

0
1
2
3
4
5
6
7
8
9
Run Code Online (Sandbox Code Playgroud)

我希望它产生:

0
2
3
4
5
6
7
8
9
10
Run Code Online (Sandbox Code Playgroud)

如果我对这个问题完全不了解,我确实表示歉意,而我的大脑此刻完全让我失望,并且解决方案显而易见。


我为什么要问?

这与问题无关,但与为什么我需要答案有关。

在我正在编写的Python脚本中,我正在执行以下操作:

for i in persons:
    for j in persons[-1(len(persons) - i - 1:]:
        if j.name in i.name:
            #remove j.name
        else: 
            #remove i.name

    #For every person (i), iterate trough every other person (j) after person (i)
    #The reason I ask this question is because sometimes I will remove person i.
    #When that happens, the index still increases and jumps over the person after i
    #So I want to decrement the index so I don't skip over that person.
Run Code Online (Sandbox Code Playgroud)

也许我会完全以错误的方式进行操作,也许我应该使用while循环并控制索引。

ars*_*jii 5

如何控制python for循环的索引?(或者可以吗?还是应该吗?)

不能/不应该 -循环控制变量将在每次迭代结束时重新分配给您要迭代的对象的下一个元素(因此i = i + 1无效,因为i它将被重新分配给下次迭代)。如果要像这样控制索引,则应使用while-loop:

i = 0
while i < 10:
    print i
    i = i + 1
Run Code Online (Sandbox Code Playgroud)

虽然,Python的range功能比您可能意识到的要灵活得多。例如,要以2进行迭代,您可以简单地使用

for i in range(0, 10, 2):
    print i
Run Code Online (Sandbox Code Playgroud)