'Advanced' list comprehension? query

pyscottishguy at hotmail.com pyscottishguy at hotmail.com
Wed Aug 8 12:00:12 EDT 2007


Hi,

I'm playing around with list comprehension, and I'm trying to find the
most aesthetic way to do the following:

I have two lists:

noShowList = ['one', 'two', 'three']

myList = ['item one', 'item four', 'three item']

I want to show all the items from 'myList' that do not contain any of
the strings in 'noShowList'.

i.e. 'item four'

I can do it like this:

def inItem(noShowList, listitem):
    return [x for x in noShowList if x in listitem]

print [x for x in myList if not inItem(noShowList, x)]

and I can do it (horribly) with:

print [x for x in myList if not (lambda y, z:[i for i in y if i in z])
(noShowList, x)]

I can also print out the items that DO contain the 'noShowList'
strings with:

print [x for x in myList for y in noShowList if y in x]

but I can't get the 'not' bit to work in the above line.

Any ideas?
Thanks!




More information about the Python-list mailing list