如何在python 3中从for inside for循环中增加迭代器?

ila*_*pad 12 python iterator for-loop python-3.x

for i in range (0, 81):
    output = send command
    while True:
        last_byte = last_byte - offset
    if last_byte > offset:
       output = send command
       i+
    else:
        output = send command
        i+
        break
Run Code Online (Sandbox Code Playgroud)

我想在每次执行send命令时增加迭代器.现在它只在执行for循环时增加1.请指教

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

我运行了这段代码,它从0到9生成.我原以为它会将迭代器增加2.

Mat*_*son 12

将迭代器的副本保存为命名对象.然后,如果你愿意,你可以跳过.

>>> myiter = iter(range(0, 10))
>>> for i in myiter:
    print(i)
    next(myiter, None)
...
0
2
4
6
8
Run Code Online (Sandbox Code Playgroud)

  • 当OP想要将变量增加到1时,这不是很有用.实际上,当我们可以简单地使用`while`循环时,没有必要使任务变得复杂. (2认同)

Kas*_*mvd 5

你不能在for循环中做到这一点.因为每次循环重新启动时它都会重新分配变量i(即使在循环中更改它之后),并且每次只增加重新分配的变量.如果你想做这样的事情你最好使用while循环并手动增加一次性变量.

>>> i=0
>>> while i< 10 :
...     print(i)
...     i +=2
...     print("increased i", i)
... 
0
('increased i', 2)
2
('increased i', 4)
4
('increased i', 6)
6
('increased i', 8)
8
('increased i', 10)
Run Code Online (Sandbox Code Playgroud)

除此之外,如果您想在一个句点上增加变量而不是基于某个特定条件,您可以使用适当的切片器来切片您循环的迭代.

例如,如果你有一个迭代器,你可以使用,itertools.islice()如果你有一个列表,你可以在indexing(my_list[start:end:step])时简单地使用步骤.