Pythonで循環リストっぽいものをやってみる
はじめに
しばらく放置していたので、小ネタを書いてみます。
ちょっとした状態管理を書くときなどに、循環リストが使いたくなる時があります。
起動 → 実行中 → 停止 → 起動みたいに繰り返される状態を表したいなど
使う機会があり、ちょっと書いてみたので公開します。
リストと言いつつ、ジェネレータを使って実装しているため、追加などができませんので悪しからず。
やってみる
def circular_list(list): # listの長さは1以上 index = 0 while True: yield list[index] index = (index + 1) % len(list)
使ってみる
試しのテストを書いてみます。
import unittest class Test(unittest.TestCase): def test_circular_list(self): list = circular_list(['foo', 'bar', 'baz']) self.assertEquals(list.__next__(), 'foo') self.assertEquals(list.__next__(), 'bar') self.assertEquals(list.__next__(), 'baz') self.assertEquals(list.__next__(), 'foo') self.assertEquals(list.__next__(), 'bar') self.assertEquals(list.__next__(), 'baz') if __name__ == '__main__': unittest.main()