Filter function and lists

Mensanator mensanator at aol.com
Wed Oct 29 20:34:50 EDT 2008


On Oct 29, 4:28 pm, Terry Reedy <tjre... at udel.edu> wrote:
> John Townsend wrote:
> > I’m trying to figure out how to use filter to walk through a list.
>
> > If I try a simple scripts like this:
>
> > def greaterthanten (number):
> >                 #pdb.set_trace()
> >                 if (number > 10):
> >                                 ret_val = 1
>
> >                 else:
> >                                 ret_val = 0
>
> >                 return ret_val
>
> > old_list = [1,2,20,30,5]
>
> > new_list = filter(greaterthanten, old_list)
>
> > #new_list becomes [20, 30]
>
> > The script works as I would expect. However, what if I need to pass more
> > than one argument to the function? Can I do that with filter? Or does
> > filter work only with function that take only a single arg?

That single argument could be a list.

>>> old_list = [1,2,20,30,5]

>>> def power_of_10(a):
	if a[0]%10==0 and a[0]<a[1]:
		return True
	else:
		return False

>>> new_list = [i[0] for i in filter(power_of_10,[[i,the_limit] for i in old_list])]
>>> new_list

[20, 30]

>>> the_limit = 25
>>> new_list = [i[0] for i in filter(power_of_10,[[i,the_limit] for i in old_list])]
>>> new_list

[20]



>
> The latter.  Other functions could be wrapped to bind all parameters
> except the list element.  Or write an explicit loop.- Hide quoted text -
>
> - Show quoted text -




More information about the Python-list mailing list