python中filter函数用法

filter函数:

filter()函数可以对序列做过滤处理,就是说可以使用一个自定的函数过滤一个序列,把序列的每一项传到自定义的过滤函数里处理,并返回结果做过滤。最终一次性返回过滤后的结果。

filter()函数有两个参数:

第一个,自定函数名,必须的
第二个,需要过滤的列,也是必须的

 代码如下 复制代码

from random import randint
allNums = []
for eachNum in range(9):
allNums.append(randint(1, 99))
print filter(lambda n: n%2, allNums)

filter就是把前边的函数应用到没个元素上,然后true的留下,false的滚

 代码如下 复制代码

>>> map((lambda x: x+2), [0, 1, 2, 3, 4, 5])
[2, 3, 4, 5, 6, 7]
>>>
>>> map(lambda x: x**2, range(6))
[0, 1, 4, 9, 16, 25]
>>> [x+2 for x in range(6)]
[2, 3, 4, 5, 6, 7]
>>>
>>>[x**2 for x in range(6)]
[0, 1, 4, 9, 16, 25]

map的作用是将函数应用到没个元素,得到一个由新元素组成的新的数组

 代码如下 复制代码

>>> print 'the total is:', reduce((lambda x,y: x+y), range(5))
the total is: 10
给出了上面的输入,reduce()函数运行了如下的算术操作。
((((0 + 1) + 2) + 3) + 4) =>
10

reduce的效果就在上边,前来两个得到一个新的,然后新的元素和第三个进行处理…..

 代码如下 复制代码

# coding=utf8

# 定义大于5小于10的函数
def guolvhanshu(num):
    if num>5 and num<10:
        return num
 
# 定义一个序列
seq=(12,50,8,17,65,14,9,6,14,5)
 
# 使用filter函数
result=filter(guolvhanshu,seq)
 
# (8,9,6)
print result

执行结果:

(8, 9, 6)

因为8,9,6大于5,小于10所以被过滤下来了

可以看例子:

 代码如下 复制代码

1 filter(function, sequence):

str = ['a', 'b','c', 'd']

def fun1(s): return s if s != 'a' else None

ret = filter(fun1, str)

print ret

## ['b', 'c', 'd']

对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple(取决于sequence的类型)返回。

可以看作是过滤函数。

例如,在一个list中,删掉偶数,只保留奇数,可以这么写:

 代码如下 复制代码

def is_odd(n):
  return n % 2 == 1
 
filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15])
# 结果: [1, 5, 9, 15]

把一个序列中的空字符串删掉,可以这么写:

 代码如下 复制代码
def not_empty(s):
  return s and s.strip()
 
filter(not_empty, ['A', '', 'B', None, 'C', ' '])
# 结果: ['A', 'B', 'C']

可见用filter()这个高阶函数,关键在于正确实现一个“筛选”函数。

时间: 2024-08-01 09:23:52

python中filter函数用法的相关文章

python中enumerate函数用法实例分析

  本文实例讲述了python中enumerate函数用法.分享给大家供大家参考.具体分析如下: 今日发现一个新函数 enumerate .一般情况下对一个列表或数组既要遍历索引又要遍历元素时,会这样写: ? 1 2 for i in range (0,len(list)): print i ,list[i] 但是这种方法有些累赘,使用内置enumerrate函数会有更加直接,优美的做法,先看看enumerate的定义: ? 1 2 3 4 5 6 7 def enumerate(collect

python中dir函数用法分析_python

本文实例讲述了python中dir函数用法.分享给大家供大家参考.具体分析如下: dir 函数返回任意对象的属性和方法列表, 包括模块对象.函数对象.字符串对象.列表对象.字典对象 ...... 相当多的东西. dir函数示例: >>> li = [] >>> dir(li) ['append','count','extend','index','insert', 'pop','remove','reverse','sort'] >>> d = {}

python中Genarator函数用法分析_python

本文实例讲述了python中Genarator函数用法.分享给大家供大家参考.具体如下: Generator函数的定义与普通函数的定义没有什么区别,只是在函数体内使用yield生成数据项即可.Generator函数可以被for循环遍历,而且可以通过next()方法获得yield生成的数据项. def func(n): for i in range(n): yield i for i in func(3): print i r=func(3) print r.next() print r.next

Python中zip()函数用法实例教程_python

本文实例讲述了Python中zip()函数的定义及用法,相信对于Python初学者有一定的借鉴价值.详情如下: 一.定义: zip([iterable, ...])zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表).若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同.利用*号操作符,可以将list unzip(解压). 二.用法示例: 读者看看下面的例子,对

php中filter函数用法之验证邮箱、url和ip地址的方法

PHP:指示支持该函数的最早的 PHP 版本. 函数 描述 PHP filter_has_var() 检查是否存在指定输入类型的变量. 5 filter_id() 返回指定过滤器的 ID 号. 5 filter_input() 从脚本外部获取输入,并进行过滤. 5 filter_input_array() 从脚本外部获取多项输入,并进行过滤. 5 filter_list() 返回包含所有得到支持的过滤器的一个数组. 5 filter_var_array() 获取多项变量,并进行过滤. 5 fil

python中partial函数用法

函数的partial应用 函数在执行时,要带上所有必要的参数进行调用.但是,有时参数可以在函数被调用之前提前获知.这种情况下,一个函数有一个或多个参数预先就能用上,以便函数能用更少的参数进行调用. 例子  代码如下 复制代码 >> from operator import add, mul >>> from functools import partial >>> add1 = partial(add, 1) # add1(x) == add(1, x) &

Python中super()函数简介及用法分享_python

首先看一下super()函数的定义: super([type [,object-or-type]]) Return a **proxy object** that delegates method calls to a **parent or sibling** class of type. 返回一个代理对象, 这个对象负责将方法调用分配给第一个参数的一个父类或者同辈的类去完成. parent or sibling class 如何确定? 第一个参数的__mro__属性决定了搜索的顺序, sup

python中的闭包用法实例详解

  这篇文章主要介绍了python中的闭包用法,以实例形式详细分析了Python中闭包的概念及相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了python中的闭包用法.分享给大家供大家参考.具体分析如下: 什么是闭包? 简单说,闭包就是根据不同的配置信息得到不同的结果 再来看看专业的解释:闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数.这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外.所以,有另

python中的全局变量用法分析

 本文实例分析了python中的全局变量用法.分享给大家供大家参考.具体分析如下: Python是一种面向对象的开发语言,在函数中使用全局变量,一般应作全局变量说明,只有在函数内经过说明的全局变量才能使用,这里就来介绍下Python全局变量有关问题. 首先应该说明的是需要尽量避免使用Python全局变量.不同的模块都可以自由的访问全局变量,可能会导致全局变量的不可预知性.对全局变量,如果程序员甲修改了_a的值,这时可能导致程序中的错误.这种错误是很难发现和更正的. 全局变量降低了函数或模块之间的