7stud <[EMAIL PROTECTED]> wrote: > On Mar 18, 2:23 am, Paul Rubin <http://[EMAIL PROTECTED]> wrote: > > Steve Holden <[EMAIL PROTECTED]> writes: > > > > max(i for i,t in enumerate(x) if t <= y) > > > > Those are actually pretty direct. > > > > > How about a solution (like the bisect one suggested almost as soon as > > > this thread started) that doesn't iterate over the whole list. > > > > Here's a Haskell-inspired one: > > > > len(list(itertools.takewhile(lambda t: y > t, x))) > > Can you explain how list() works in that statement. I looked up > takewhile() and it returns an iterator that will automatically stop at > the insertion point? So does list() do an internal comprehension with > the iterator?
Any call to list(iterator) works roughly as follows: def likelist(iterator): result = [] while True: try: result.append(iterator.next()) except StopIteration: return result Alex -- http://mail.python.org/mailman/listinfo/python-list