A nifty algoritm for filtering out values

Quinn Dunkan quinn at lira.ugcs.caltech.edu
Tue Nov 21 23:41:41 EST 2000


On Tue, 21 Nov 2000 20:38:46 -0500, Tyler Eaves <tyler at tylereaves.com> wrote:
>from string import split
>foo2=[]
>for x in foo:
>	foo2.append(split(x,'.')[0])
>
>
>On 21 Nov 2000 23:46:21 +0100, morten at esol.no (Morten W. Petersen)
>wrote:
>
>>Any suggestions as to how this is best achieved (speed-wise) ?
>>
>>If there is a list, like so:
>>
>>	['comp.lang.python', 'comp.lang.lisp', 'alt.test', 'alt.fan.jwz',
>>		'no.it.os.unix.linux.diverse'] * 300
>>
>>What's the best way of getting another object that shows only something like
>>this:
>>
>>	['comp', 'alt', 'no']
>>
>>?

newsgroups = ['comp.lang.python', 'comp.lang.lisp', 'alt.test', 'alt.fan.jwz',
    'no.it.os.unix.linux.diverse'] * 300

prefixes = {}
for n in newsgroups:
    prefixes[n.split('.', 1)[0]] = None
prefixes = prefixes.keys()

It may be faster to write:

prefixes = {}
for n in newsgroups:
    assert '.' in n
    prefixes[n[:n.find('.')]] = None
prefixes = prefixes.keys()

I'll let you do the benchmarks :)



More information about the Python-list mailing list