如何在python中的for循环中操作迭代器?

2024-04-19 03:10:48 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我试图在一个很小的范围内移动,并且想要引用在迭代的前一步中创建的变量,我如何引用它?在

如果我使用一个范围为2,6的for循环,并且在第一次迭代中创建两个变量a[I]&b[I],是否可以在第4次或第5次迭代中引用a3?或者类似剂量的东西(a[i-1],a[i])

为糟糕的psuedo代码道歉。在


Tags: 代码fora3剂量psuedo
1条回答
网友
1楼 · 发布于 2024-04-19 03:10:48

你不能“操纵迭代器”。但你可以做两件简单的事。在

首先,由于显然是在遍历序列(比如range),所以可以使用索引。例如:

for i, value in enumerate(my_sequence):
    if 3 <= i <= 4:
        old_value = my_sequence[i-2]
        do_something(old_value, value)

其次,你只需记住旧的价值观:

^{pr2}$

如果您想让第二个更具可读性,您可以很容易地编写一个函数,该函数接受任何iterable并迭代3个值的重叠组,因此您只需执行以下操作:

for lastlast, last, value in triplets(my_sequence):
    do_something(lastlast, value)

那么,如何编写triplets函数呢?在

def triplets(iterable):
    a, b, c = itertools.tee(iterable, 3)
    next(b, None)
    next(c, None)
    next(c, None)
    return itertools.izip(a, b, c)

或者,如果您只关心序列,而不关心一般的Iterable,并且愿意浪费一些空间来节省一点时间,当然也可以节省一些代码:

def triplets(sequence):
    return zip(sequence, sequence[1:], sequence[2:])

相关问题 更多 >