Python 在for循环中干扰迭代

Python 在for循环中干扰迭代,python,iteration,Python,Iteration,我只是一个初学者,只是想问一下,在for循环中使用迭代器是否可以接受/好的代码。 示例(python): 我没有任何问题,我的代码看起来像这样运行得很好,但我不确定这是否算是“好”代码。您不会弄乱迭代器-您只需创建一个同名变量并对其进行处理 >>> for a in range(5): ... print id(a) ... print a ... a -= 1 ... print id(a) ... print ... 24822128 0 248221

我只是一个初学者,只是想问一下,在for循环中使用迭代器是否可以接受/好的代码。 示例(python):


我没有任何问题,我的代码看起来像这样运行得很好,但我不确定这是否算是“好”代码。

您不会弄乱迭代器-您只需创建一个同名变量并对其进行处理

>>> for a in range(5):
...   print id(a)
...   print a
...   a -= 1
...   print id(a)
...   print
... 
24822128
0
24822152

24822104
1
24822128

24822080
2
24822104

24822056
3
24822080

24822032
4
24822056                                                                   
正如您所看到的,这些变量是不同的,循环显然迭代了5次

这是一个好的练习吗。这是一种与实际相反的东西,正如我们应该预料的那样,在一个循环中,“a”在每一行中的意思是相同的。您应该以不同的方式命名变量,如

>>> for a in range(10):
...   print a
...   b = a - 1

如果你想实际影响循环次数,你应该使用
而不是
循环。

你给出的代码是可以接受的,但不是特别有效。无论是否修改
i
,循环都将运行相同的次数

>>> for i in range(5):
>>>     i = i - 1
>>>     print(i)
-1
0
1
2
3

当您修改变量
i
时,它会创建一个新的变量,与控制循环的变量分开。

我认为修改迭代器的当前值很好,就像修改一个新变量一样。但我不建议像这样修改迭代器本身

my_list = [1, 2, 3, 4]
for i in my_list:
    my_list.append(i+4)

将生成一个无限循环

它不会对您的实际迭代做任何事情,它只会使
i
引用其他变量。也就是说,无论您将
i
设置为与语法问题部分相等,它仍将运行
n
多次。
范围(n)
之后缺少
,如果
块,则缺少
的意图
my_list = [1, 2, 3, 4]
for i in my_list:
    my_list.append(i+4)