Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中修改for循环中的迭代器_Python - Fatal编程技术网

在python中修改for循环中的迭代器

在python中修改for循环中的迭代器,python,Python,@Padraic Cunningham如果你想让我删除 问题 我是python新手。我想根据某些条件跳过一些迭代器值。这在C语言中很容易,但在python中我遇到了困难 所以请帮助我理解为什么这里的代码循环100次而不是10次 for i in range(100): print i i = i +10 编辑:我知道可以选择更改for循环的步长。但我对动态更改迭代器变量感兴趣,就像我们在C中可以做的那样。好吧,我明白了,因为循环在python中不同于在C中。简单的方法是使用w

@Padraic Cunningham如果你想让我删除 问题

我是python新手。我想根据某些条件跳过一些迭代器值。这在C语言中很容易,但在python中我遇到了困难

所以请帮助我理解为什么这里的代码循环100次而不是10次

 for i in range(100):
    print i
    i = i +10

编辑:我知道可以选择更改for循环的步长。但我对动态更改迭代器变量感兴趣,就像我们在C中可以做的那样。好吧,我明白了,因为循环在python中不同于在C中。简单的方法是使用while循环,我在代码中做到了这一点,它起到了作用。谢谢社区

要执行此操作,请使用while循环。在for循环中更改迭代器不会改变迭代次数,相反,您可以这样做

i=0
while i < 100:
    print i
    i = i +10
i=0
当我<100时:
打印i
i=i+10

for循环正在iterable
范围(100)
中穿行

修改当前值不会影响iterable中接下来出现的内容(实际上,您可以拥有任何iterable;下一个值可能不是数字!)

选项1:

i = 0
while i < 100:
    i += 4
 for i in range(0,100,10):
       pass

此示例可能会更清楚地说明为什么您的方法没有多大意义:

for i in [1,2,3,4,5,'cat','fish']:
    i = i + i
    print i
这是完全有效的python代码(定义了字符串添加);修改iterable将需要一些不直观的内容


如果您尝试此代码,它应该可以工作

for i in range(100)[::10]:
    print i
[::10]的工作原理类似于字符串切片。[起始位置:停止位置:每个循环中的步数]


我没有使用前两个值,所以它们被设置为默认的第一个位置和最后一个位置。我刚刚告诉它将步骤分为10步。

如果你想修改迭代器,你可以这样做:

iterator= iter(range(100))
for i in iterator:
    print (i)
    for k in range(9): next(iterator)

但是没有实际的兴趣

即使在C语言中,在循环过程中修改迭代变量也是一个坏主意。看看
step
的功能。我知道我可以将步长更改为10,但我想在运行时任意更改步长,比如在一些“if条件”中。我也理解更改迭代变量是个坏主意,但我仍然希望这样做。谢谢你,while循环为我工作。将阅读有关python中迭代器概念的更多信息。