过滤函数python,过滤器函数

Python 之内置函数:filter、map、reduce、zip、enumerate

这几个函数在 Python 里面被称为高阶函数,本文主要学习它们的用法。

成都创新互联公司专注于溧阳网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供溧阳营销型网站建设,溧阳网站制作、溧阳网页设计、溧阳网站官网定制、重庆小程序开发服务,打造溧阳网络公司原创品牌,更为您提供溧阳网站排名全网营销落地服务。

filter 函数原型如下:

第一个参数是判断函数(返回结果需要是 True 或者 False),第二个为序列,该函数将对 iterable 序列依次执行 function(item) 操作,返回结果是过滤之后结果组成的序列。

简单记忆:对序列中的元素进行筛选,获取符合条件的序列。

返回结果为: ,使用 list 函数可以输入序列内容。

map 函数原型如下:

该函数运行之后生成一个 list,第一个参数是函数、第二个参数是一个或多个序列;

下述代码是一个简单的测试案例:

上述代码运行完毕,得到的结果是: 。使用 print(list(my_new_list)) 可以得到结果。

map 函数的第一个参数,可以有多个参数,当这种情况出现后,后面的第二个参数需要是多个序列。

map 函数解决的问题:

reduce 函数原型如下:

第一个参数是函数,第二个参数是序列,返回计算结果之后的值。该函数价值在于滚动计算应用于列表中的连续值。

测试代码如下:

最终的结果是 6,如果设置第三个参数为 4,可以运行代码查看结果,最后得到的结论是,第三个参数表示初始值,即累加操作初始的数值。

简单记忆:对序列内所有元素进行累计操作。

zip 函数原型如下:

zip 函数将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

如果各个迭代器的元素个数不一样,则返回列表长度与最短的对象相同,利用星号( * )操作符,可以将元组解压为列表。

测试代码如下:

展示如何利用 * 操作符:

输出结果如下:

简单记忆:zip 的功能是映射多个容器的相似索引,可以方便用于来构造字典。

enumerate 函数原型如下:

参数说明:

该函数用于将一个可遍历的数据对象组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

测试代码如下:

返回结果为: 。

本文涉及的函数可以与 lambda 表达式进行结合,能大幅度提高编码效率。最好的学习资料永远是官方手册

python中的filter()函数怎么用?特别是一个函数有多个输入参数时。

map是把函数调用的结果放在列表里面返回,它也可以接受多个 iterable,在第n次调用function时,将使用iterable1[n], iterable2[n], ...作为参数。

filter(function, iterable)

这个函数的功能是过滤出iterable中所有以元素自身作为参数调用function时返回True或bool(返回值)为True的元素并以列表返回.

def f_large_than_5(x):

return x 5

filter(f_large_than_5, range(10))

[6,7,8,9]

Python中的eval()、filter()、float()函数有什么用?

Python解释器内置了许多函数,这意味着我们无需定义,始终可以它们。下面按照函数的字母顺序,讨论一些常用的内建函数。

eval()

eval()函数解析传给它的表达式,并在程序中运行Python表达式(代码)。举个例子:

x = 1

eval("x + 1")  # 注意:"x + 1"是字符串

2

eval("4  9")

True

eval("'py' * 3")

'pypypy'

eval("10 ** 2")

100

eval()函数不仅仅能运行简单表达式,还能调用函数,使用方法等等:

eval("abs(-11)")        # 计算-11的绝对值

11

eval('"hello".upper()')   # 把字符串'hello'全变成大写字母

'HELLO'

import os

eval('os.getcwd()')       # 获取当前的工作目录

'/home/thepythonguru'

但是需要注意的是eval()仅适用于表达式,尝试传递语句会导致语法错误:

eval('a = 1')                    # 赋值语句

Traceback (most recent call last):

File "", line 1, in

File "", line 1

a = 1

^

SyntaxError: invalid syntax

eval('import re')             # 导入语句

Traceback (most recent call last):

File "", line 1, in

File "", line 1

import re

^

SyntaxError: invalid syntax

此外,使用eval()语句应该十分小心,永远不要将不受信任的源直接传递给eval()。 因为恶意用户很容易对您的系统造成破坏。 例如:

eval(input())  # eval()将执行用户输入的代码

用户输入以下代码就能从系统中删除所有文件:

os.system("RM -RF /")

# 上面输入相当于执行:

eval('os.system("RM -RF /")')

filter()

"filter"的意思是“过滤”,filter()函数需要两个参数:一个函数对象和一个可迭代对象。函数对象需要返回一个布尔值,并为可迭代的每个元素调用。 filter()函数仅返回那些通过函数对象返回值为true的元素。解释有一些抽象,看一个例子:

a = [1, 2, 3, 4, 5, 6]

filter(lambda x : x % 2 == 0, a)        # 过滤出所有偶数,结果返回一个filter对象

filter object at 0x1036dc048

list(filter(lambda x : x % 2 == 0, a))  # 可以使用list()函数使fileter对象变成列表,方便查看结果

[2, 4, 6]

下面是另外一个例子:

dict_a = [{'name': 'python', 'points': 10}, {'name': 'java', 'points': 8}]

filter(lambda x : x['name'] == 'python', dict_a)  # 过滤出列表中键'name'为值'python'的字典

filter object at 0x1036de128

tuple(filter(lambda x : x['name'] == 'python', dict_a))  # 使用tuple()函数使结果变成字典

({'name': 'python', 'points': 10},)

float()

float()的参数是一个数字或者字符串,它返回一个浮点数。如果参数是字符串,则字符串中应该包含一个数字,并可以在数字前加入一个 '-' 符号,代表负数。参数也可以是表示NaN(非数字)或正无穷大的字符串。如果没有任何参数的话,将返回0.0。

float('+1.23')         # 1.23

1.23

float('   -12345\n')   # -12345

-12345.0

float('1e-003')        # 0.001

0.001

float('+1E6')          # 10的6次幂

1000000.0

float('-Infinity')     # 无穷小

-inf

float('-inf') + 100     # 负无穷小加100仍等于负无穷小

-inf

float('inf')           # 无穷大

inf

float('NaN')           # NaN,代表非数字

nan

关于Python的基础问题可以看下这个网页的视频教程,网页链接,希望我的回答能帮到你。

python三个重要的内置函数(map, filter,reduce)-

map函数第一个参数是一个函数function,第二个参数是一个可迭代的对象iterable,他的功能是将可迭代对象iterable里面的每一项都应用到函数function中,然后返回一个迭代器。

可迭代器里面有多少个元素则结果就包含多少个元素

filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

reduce() 函数会对参数序列中元素进行累积。

函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

Python 数据处理(三十九)—— groupby(过滤)

filter 方法可以返回原始对象的子集.

例如,我们想提取分组内的和大于 3 的所有分组的元素

filter 的参数必须是一个函数,函数参数是每个分组,并且返回 True 或 False

例如,提取元素个数大于 2 的分组

另外,我们也可以过滤掉不满足条件的组,而是返回一个类似索引对象。在这个对象中,没有通过的分组的元素被 NaN 填充

对于具有多列的 DataFrames ,过滤器应明确指定一列作为过滤条件

在进行聚合或转换时,你可能想对每个分组调用一个实例方法,例如

但是,如果需要传递额外的参数时,它会变得很冗长。我们可以直接使用分派到组对象上的方法

实际上这生成了一个函数包装器,在调用时,它接受所有传递的参数,并在每个分组上进行调用。

然后,这个结果可以和 agg 和 transform 结合在一起使用

在上面的例子中,我们按照年份分组,然后对每个分组中使用 fillna 补缺失值

nlargest 和 nsmallest 可以在 Series 类型的 groupby 上使用

对分组数据的某些操作可能并不适合聚合或转换。或者说,你可能只是想让 GroupBy 来推断如何合并结果

我们可以使用 apply 函数,例如

改变返回结果的维度

在 Series 上使用 apply 类似

对于之前的示例数据

假设,我们想按 A 分组并计算组内的标准差,但是 B 列的数据我们并不关心。

如果我们的函数不能应用于某些列,则会隐式的删除这些列,所以

直接计算标准差并不会报错

可以使用分类变量进行分组,分组的顺序会按照分类变量的顺序

可以使用 pd.Grouper 控制分组,对于如下数据

可以按照一定的频率对特定列进行分组,就像重抽样一样

可以分别对列或索引进行分组

类似于 Series 和 DataFrame ,可以使用 head 和 tail 获取分组前后几行

在 Series 或 DataFrame 中可以使用 nth() 来获取第 n 个元素,也可以用于获取每个分组的某一行

如果你要选择非空项,可以使用关键字参数 dropna ,如果是 DataFrame ,需要指定为 any 或 all (类似于 DataFrame.dropna(how='any|all') )

与其他方法一样,使用 as_index=False 分组名将不会作为索引

你也可以传入一个整数列表,一次性选取多行

使用 cumcount 方法,可以查看每行在分组中出现的顺序

可以使用 ngroup() 查看分组的顺序,该顺序与 cumcount 的顺序相反。

注意 :该顺序与迭代时的分组顺序一样,并不是第一次观测到的顺序

python中的filter函数怎么用

filter就是按条件筛选:

filter(bool,['spam','','ni'])

list(filter(bool,[''spam,'','ni']))

输出的结果为['spam','ni']

#按照bool型筛选,因为中间的‘’,为空,不是bool型所以过滤掉。


新闻名称:过滤函数python,过滤器函数
文章来源:http://myzitong.com/article/dsciddg.html