I am trying to write a loop that iterates over a sequence and do 
something x number of times. But sometimes i will need more events 
(larger number x) than i have have items in the sequence, so if i need 
more events that i have stuff in my sequence i would like to have the 
loop reload and shuffle the deck and start all over again, reloading as 
many times as necessary to get the number of events needed. I suppose i 
could go around cyclically modulo the list size but i would want to 
shuffle the deck before doing that again...

it seems to me that i need something like itertools cycle, except that 
i need to keep track of when i have exhausted my list and then call 
random.shuffle() on my sequence.

def cycle(iterable):
        saved = []
        for element in iterable:
                yield element
                saved.append(element)
        while saved:
                for element in saved:
                        yield element
                        
def test():
                seq = ('one', 'two', 'three', 'four', 'five', 'six', 'seven', 
'eight', 'nine', 'ten')
                loop = cycle(seq)
                count = 1
                for item in range(25):
                        print count, loop.next()
                        count = count + 1

if __name__ == '__main__':
        test()


here i have gone through my list 2.5 times .. and somewhere after the 
second and third(tho incomplete) rounds i need to shuffle... but i am 
not sure how to fix that.

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to