Function that returns function that repeats boolean results
TrueだったらFalseで、FalseだったらTrueにしたい。
なんかそんなことそこかしこで必要で、その為の便利なものが
あるのかなぁと思ったんだけど無いぽい。
0と1を次々返す方法 - When it’s ready.
Yield
実装は自然だが、next()がわずらわしい。
404 Blog Not Found:Algorithm - 0と1を次々と返す簡単なお仕事
弾さん風に記述するならば、こう書くかなぁ。
#!/usr/local/bin/python3.1 -t import itertools def flipflop(p=False): def _(): return next(g) g = itertools.cycle((not not p, not p)) return _ if __name__ == '__main__': f1 = flipflop() print('f1:', f1()) print('f1:', f1()) print('f1:', f1()) print('f1:', f1()) print() f2 = flipflop(True) print('f2:', f2()) print('f2:', f2()) print('f2:', f2()) print('f2:', f2()) print() print('f1:', f1()) print('f1:', f1()) print() print('f2:', f2()) print('f2:', f2())
f1: False # False、Trueの順 f1: True f1: False f1: True f2: True # True, Falseの順 f2: False f2: True f2: False f1: False # f1を再開 f1: True f2: True # f2を再開 f2: False