Idiomatic way of repeating items in a sequence.
Mike C. Fletcher
mcfletch at rogers.com
Mon Jun 30 12:10:54 EDT 2003
John Hunter wrote:
>This doesn't look too bad to me, but perhaps list comprehensions are
>clearer?
>
> seq = ['a', 'b', 'c']
> print [x for x in seq for x in seq]
>
>>> def repeat3( sequence, count=1 ):
... return [x for x in sequence for i in range(count) ]
...
>>> repeat3( [2,3,4], 3 )
[2, 2, 2, 3, 3, 3, 4, 4, 4]
I *think* is what you were suggesting, and is indeed very clear. For
those into generators, this is fun (but has no huge advantage if you
wind up using repeat instead of irepeat, or if you're using small
sequences):
>>> from __future__ import generators
>>> def irepeat( sequence, count=1 ):
... countSet = range(count)
... for item in sequence:
... for i in countSet:
... yield item
...
>>> def repeat( sequence, count = 1 ):
... return list(irepeat(sequence, count))
...
>>> repeat( [2,3,4], 3 )
[2, 2, 2, 3, 3, 3, 4, 4, 4]
Enjoy,
Mike
_______________________________________
Mike C. Fletcher
Designer, VR Plumber, Coder
http://members.rogers.com/mcfletch/
More information about the Python-list
mailing list