is there a better way?
Paul McGuire
ptmcg at austin.rr._bogus_.com
Fri Feb 10 13:19:27 EST 2006
<markscala at gmail.com> wrote in message
news:1139594221.696053.7360 at g47g2000cwa.googlegroups.com...
> Problem:
>
> You have a list of unknown length, such as this: list =
> [X,X,X,O,O,O,O]. You want to extract all and only the X's. You know
> the X's are all up front and you know that the item after the last X is
> an O, or that the list ends with an X. There are never O's between
> X's.
>
> I have been using something like this:
> _____________________
>
> while list[0] != O:
> storage.append(list[0])
> list.pop(0)
> if len(list) == 0:
> break
> _____________________
>
> But this seems ugly to me, and using "while" give me the heebies. Is
> there a better approach?
>
> hope this is clear.
> thanks
>
Use itertools.
>>> import itertools
>>> lst = "X,X,X,O,O,O,O,O,X,X,X,X,O,X".split(",")
>>> [z for z in itertools.takewhile(lambda x:x=="X",lst)]
['X', 'X', 'X']
-- Paul
More information about the Python-list
mailing list