Scott David Daniels wrote: > [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? >> > > Your names could be better as someone mentioned. > ex, oh = 7, 13 # for example > data = [ex, ex, ex, oh, oh, oh, oh] > If you need a list distinct from the original: > try: > result = data[: data.index(oh)] > except ValueError: > result = list(data) > > Or you could simply: > try: > data = data[: data.index(oh)] > except ValueError: > pass > and data will be either the sublist you want or the original list.
I forgot the obvious: result = data.count(ex) * [ex] -- -Scott David Daniels [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list