我有一个带有计数器组件的编码接口。每次更新时它只增加1。将其视为{1,2,3,...}的无限生成器,我必须使用它。
我需要使用此值并从-1.5到1.5进行迭代。因此,迭代应该从-1.5开始并达到1.5然后从1.5回到-1.5。
我应该如何使用这个无限迭代器来生成该范围内的迭代?
答案 0 :(得分:1)
您可以使用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 ...
:
JSON.parse
答案 1 :(得分:0)
类似的东西:
1.5
-1.5
1.5
-1.5
1.5
-1.5
1.5
-1.5
1.5
-1.5
输出:
cycle
请注意,这开始是1.5,因为 infGenGiven 中的第一个值是0,尽管对于您的生成器它是1,因此 infGenCycle 输出将为您提供所需的内容。
答案 2 :(得分:0)
谢谢大家。
我想最好的方法是使用三角函数(正弦或余弦),它们在正负号之间振荡。
更多详细信息,请访问:https://en.wikipedia.org/wiki/Trigonometric_functions
欢呼