Idiomatic way of repeating items in a sequence.

Duncan Booth duncan at
Mon Jun 30 16:36:46 CEST 2003

Duncan Booth <duncan at> wrote in
news:Xns93AA81EC76E7Eduncanrcpcouk at 

> The most obvious one that springs to mind is just a slight
> simplification of your version:
>    def repeatitems(sequence, repetitions):
>        newlist = []
>        for item in sequence:
>            newlist.extend([item] * repetitions)
>        return newlist

Or, if you are in a "I've got a new toy to play with" mood you could use 
itertools from Python 2.3 to obfuscate it somewhat:

  from itertools import chain, izip, repeat
  def repeatiterate(sequence, repetitions):
      return chain(*izip(*repeat(sequence, repetitions)))

This version returns an iterator, so you might want to throw in a call to 
'list' if you want to do anything other than iterating over the result.

Duncan Booth                                             duncan at
int month(char *p){return(124864/((p[0]+p[1]-p[2]&0x1f)+1)%12)["\5\x8\3"
"\6\7\xb\1\x9\xa\2\0\4"];} // Who said my code was obscure?

More information about the Python-list mailing list