Extract all words that begin with x

Aahz aahz at pythoncraft.com
Wed May 12 11:33:49 EDT 2010


In article <mailman.100.1273653829.32709.python-list at python.org>,
Stefan Behnel  <stefan_ml at behnel.de> wrote:
>superpollo, 11.05.2010 17:03:
>> Aahz ha scritto:
>>> In article <mailman.11.1273548189.32709.python-list at python.org>,
>>> Terry Reedy <tjreedy at udel.edu> wrote:
>>>> On 5/10/2010 5:35 AM, James Mills wrote:
>>>>> On Mon, May 10, 2010 at 6:50 PM, Xavier Ho<contact at xavierho.com> wrote:
>>>>>> Have I missed something, or wouldn't this work just as well:
>>>>>>
>>>>>>>>> list_of_strings = ['2', 'awes', '3465sdg', 'dbsdf', 'asdgas']
>>>>>>>>> [word for word in list_of_strings if word[0] == 'a']
>>>>>> ['awes', 'asdgas']
>>>>> I would do this for completeness (just in case):
>>>>>
>>>>>>>>> [word for word in list_of_strings if word and word[0] == 'a']
>>>>> Just guards against empty strings which may or may not be in the list.
>>>> ... word[0:1] does the same thing. All Python programmers should
>>>> learn to use slicing to extract a char from a string that might be
>>>> empty.
>>>> The method call of .startswith() will be slower, I am sure.
>>>
>>> And if it is slower, so what? Using startswith() makes for faster
>>> reading of the code for me, and I'm sure I'm not the only one.
>>
>> also, what if the OP intended "words that begin with x" with x a string
>> (as opposed to a single character) ?
>
>     word[:len(x)] == x
>
>will work in that case.

But that's now going to be slower.  ;-)  (Unless one makes the obvious
optimization to hoist len(x) out of the loop.)
-- 
Aahz (aahz at pythoncraft.com)           <*>         http://www.pythoncraft.com/

f u cn rd ths, u cn gt a gd jb n nx prgrmmng.



More information about the Python-list mailing list