【问题标题】:Code to do a "bit iterator" but with 3 states执行“位迭代器”但具有 3 个状态的代码
【发布时间】:2015-09-24 21:55:58
【问题描述】:

我想做一个迭代超过 3 个状态的计数器。我知道如何使用位运算符 i^=1 为 2 个状态执行此操作。

我想知道是否有办法在三个状态下进行类似的操作?

我意识到我可以做到:

i = 0
while
   if(i==3)
       i = 0
   do stuff here
   i++

但我希望有更优雅和高效的东西。我在想一个模数技巧什么的。

(我现在正在使用python)

【问题讨论】:

    标签: python math syntax logic


    【解决方案1】:

    itertools 对您有用吗?

    import itertools
    states = itertools.cycle([0, 1, 2])
    while True:
      i = states.next()
      <do stuff>
    

    【讨论】:

    • 是的,这是完美的。我认为已经有一个模块对象可以做到这一点。谢谢你。 (我会留下这个问题,看看是否有一种语言通用的数学运算可以做到这一点)。
    【解决方案2】:
    for i in itertools.cycle([1,2,3]):
        target.set_state(i)
    

    也许??

    【讨论】:

      【解决方案3】:

      这是我在数学和语言上独立提出的。对于超过 3 个的集合,我相信您需要更改素数和偏移量。

      i = 1
      while
           do stuff
           i = 7%(3+(abs(i-3)))
      

      【讨论】:

        猜你喜欢
        • 2014-05-08
        • 1970-01-01
        • 2014-12-12
        • 1970-01-01
        • 1970-01-01
        • 2018-09-04
        • 1970-01-01
        • 2021-07-31
        相关资源
        最近更新 更多