Re: Filter function and lists

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Terry Reedy

    Re: Filter function and lists

    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(greatert hanten, 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?
    The latter. Other functions could be wrapped to bind all parameters
    except the list element. Or write an explicit loop.

  • Mensanator

    #2
    Re: Filter function and lists

    On Oct 29, 4:28 pm, Terry Reedy <tjre...@udel.e duwrote:
    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(greatert hanten, 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 -

    Comment

    Working...