On 10/27/10 09:39, Jussi Piitulainen wrote:
So, is there some simple expression in Python for this? Just asking
out of curiosity when nothing comes to mind, not implying that there
should be or that Python should be changed in any way.
To expand, below is the best I can think of in Python 3 and I'm
curious if there is something much more concise built in that I am
missing.
def sed(source, skip, keep, drop):
'''First skip some elements from source,
then keep yielding some and dropping
some: sed(source, 1, 2, 3) to skip 1,
yield 2, drop 3, yield 2, drop 3, ...'''
for _ in range(0, skip):
next(source)
while True:
for _ in range(0, keep):
yield next(source)
for _ in range(0, drop):
next(source)
Could be done as: (py2.x in this case, adjust accordingly for 3.x)
def sed(source, skip, keep, drop):
for _ in range(skip): source.next()
tot = keep + drop
for i, item in enumerate(source):
if i % tot < keep:
yield item
-tkc
--
http://mail.python.org/mailman/listinfo/python-list