is there a better way?
Scott David Daniels
scott.daniels at acm.org
Fri Feb 10 18:54:26 EST 2006
Scott David Daniels wrote:
> 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.
I forgot the obvious:
result = data.count(ex) * [ex]
--
-Scott David Daniels
scott.daniels at acm.org
More information about the Python-list
mailing list