【发布时间】:2015-09-24 21:55:58
【问题描述】:
我想做一个迭代超过 3 个状态的计数器。我知道如何使用位运算符 i^=1 为 2 个状态执行此操作。
我想知道是否有办法在三个状态下进行类似的操作?
我意识到我可以做到:
i = 0
while
if(i==3)
i = 0
do stuff here
i++
但我希望有更优雅和高效的东西。我在想一个模数技巧什么的。
(我现在正在使用python)
【问题讨论】:
我想做一个迭代超过 3 个状态的计数器。我知道如何使用位运算符 i^=1 为 2 个状态执行此操作。
我想知道是否有办法在三个状态下进行类似的操作?
我意识到我可以做到:
i = 0
while
if(i==3)
i = 0
do stuff here
i++
但我希望有更优雅和高效的东西。我在想一个模数技巧什么的。
(我现在正在使用python)
【问题讨论】:
itertools 对您有用吗?
import itertools
states = itertools.cycle([0, 1, 2])
while True:
i = states.next()
<do stuff>
【讨论】:
for i in itertools.cycle([1,2,3]):
target.set_state(i)
也许??
【讨论】:
这是我在数学和语言上独立提出的。对于超过 3 个的集合,我相信您需要更改素数和偏移量。
i = 1
while
do stuff
i = 7%(3+(abs(i-3)))
【讨论】: