我有一个编码接口,它有一个计数器组件。它随着每次更新而简单地增加1。考虑一下我必须使用的随时间推移的{1,2,3,...}的无限生成器。在Python中向前和向后迭代
我需要使用此值并从-1.5到1.5重复。所以,迭代应该从-1.5开始,达到1.5,然后从1.5回到-1.5。
我应该如何使用这个无限迭代器来生成该范围内的迭代?
我有一个编码接口,它有一个计数器组件。它随着每次更新而简单地增加1。考虑一下我必须使用的随时间推移的{1,2,3,...}的无限生成器。在Python中向前和向后迭代
我需要使用此值并从-1.5到1.5重复。所以,迭代应该从-1.5开始,达到1.5,然后从1.5回到-1.5。
我应该如何使用这个无限迭代器来生成该范围内的迭代?
喜欢的东西:
import itertools
infGenGiven = itertools.count() # This is similar your generator
def func(x):
if x%2==0:
return 1.5
else:
return -1.5
infGenCycle = itertools.imap(func, infGenGiven)
count=0
while count<10:
print infGenCycle.next()
count+=1
输出:
1.5
-1.5
1.5
-1.5
1.5
-1.5
1.5
-1.5
1.5
-1.5
请注意,这将启动1.5,因为在infGenGiven的第一个值是0,虽然你的发电机为1等的infGenCycle输出会给你你想要的。
您可以使用cycle
从itertools
重复一个序列。
from itertools import cycle
# build the list with 0.1 increment
v = [(x-15)/10 for x in range(31)]
v = v + list(reversed(v))
cv = cycle(v)
for c in my_counter:
x = next(cv)
这将重复列表v
:
-1.5, -1.4, -1.3, -1.2, -1.1, -1.0, -0.9, -0.8, -0.7, -0.6, -0.5, -0.4,
-0.3, -0.2, -0.1, 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0,
1.1, 1.2, 1.3, 1.4, 1.5, 1.5, 1.4, 1.3, 1.2, 1.1, 1.0, 0.9, 0.8, 0.7,
0.6, 0.5, 0.4, 0.3, 0.2, 0.1, 0.0, -0.1, -0.2, -0.3, -0.4, -0.5, -0.6,
-0.7, -0.8, -0.9, -1.0, -1.1, -1.2, -1.3, -1.4, -1.5, -1.5, -1.4, -1.3,
-1.2, -1.1, -1.0, -0.9, -0.8, -0.7, -0.6, -0.5, -0.4, -0.3, -0.2, -0.1,
0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3,
1.4, 1.5, 1.5, 1.4, 1.3, 1.2, 1.1, 1.0, 0.9 ...
在什么增量? – AChampion
提供一个示例输入和输出,以减少混淆。 – sai
@Jeremy - 提供给我们一个你迄今为止尝试过的样品,以及它如何不能满足你的需求。要求我们解决你的问题,而不帮助我们看到你的尝试有点像要求我们为你做功课。 – Forty3