title: How could I shuffle python infinite generator
body: <p>I have an object which I make it to be an generator:</p>
  
  <pre><code>class obj(object):
       def __init__():
           pass
       def __iter__():
           a = list(range(10))
           shuffle(a)
           for i in range(len(a)):
               yield a[i]
       .....
  </code></pre>
  
  <p>It can be seen that there is a shuffle operation when the generator is created. When I use <code>itertools.cycle</code>, this generator can works infinitely, but no shuffle operator will be done except the first time. How could I create an infinite generator behaves like <code>itertools.cycle</code> but can still implement shuffle each cycle ?</p>