is there a better way?
Scott David Daniels
scott.daniels at acm.org
Fri Feb 10 14:29:42 EST 2006
markscala at gmail.com 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.
--
-Scott David Daniels
scott.daniels at acm.org
More information about the Python-list
mailing list