[EMAIL PROTECTED] wrote: > 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
There's a few ways to do this, really depends on : mylist = [1,2,3,4,5,6,0,0,0] list comprehension (will get ALL non zeros, and strip out all zeros, but is different from your function): [x for x in mylist if x != 0] list slice(same as your function): mylist[:mylist.index(0)] Depends what you want to happen if your list is something like: [1,2,3,0,4,5,6,0,0] [0,1,2,3,4,5,6] [0,1,2,3,4,5,6,0] [1,2,3,4,5,6] -- http://mail.python.org/mailman/listinfo/python-list