Extract all words that begin with x

Stefan Behnel stefan_ml at behnel.de
Wed May 12 12:15:48 EDT 2010


Aahz, 12.05.2010 17:33:
> 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.)

Right, I forgot to mention that I left that as an exercise to the reader.

Stefan




More information about the Python-list mailing list