当前位置:   article > 正文

Python个人学习笔记(1)——filter函数_字典过滤函数

字典过滤函数

1.函数简介:
filter函数是Python中常用的内置函数,调用无需加载库,直接使用即可。它主要用来根据特定条件过滤迭代器中不符合条件的元素,返回一个惰性计算的filter对象或迭代器。需要用list函数进行转换,才能得到符合的条件元素组成的新列表。
2.用法

filter(function or None, iterable)
  • 1

function:函数,作用是对iterable中的每个元素判断是否符合特定条件。

None:不调用任何函数,只对可迭代对象中的元素本身判断真假,保留为真的元素。

iterables:可迭代对象(序列、字典等)。

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

3.实例

c = [1,2,3,4,5,6,7,8,9]
def f(x):
    return x % 2 == 0
print(filter(f,c))

输出结果:<filter object at 0x000001FF67EE3FA0>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

返回一个惰性计算的filter对象或迭代器。接下来看下用list函数进行转换会得到什么,代码如下:

c = [1,2,3,4,5,6,7,8,9]
def f(x):
    return x % 2 == 0
print(list(filter(f,c)))

输出结果:[2, 4, 6, 8]

#labmda语句形式:
c = [1,2,3,4,5,6,7,8,9]
print(list(filter(lambda x:x % 2 == 0,c)))

输出结果:[2, 4, 6, 8]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

4.当第一个参数为None,而不是函数时
只对可迭代对象中的元素本身判断真假,保留为真的元素,代码如下:

c = [-1,0,1,2,0]
print(list(filter(None,c)))
输出结果:[-1, 1, 2]
  • 1
  • 2
  • 3

因为python中,0表示False,非0表示True,所以过滤掉False的值,即过滤掉0。

5.在字典中的用法

c = {1:'苹果',2:'华为',3:'三星',4:'小米'}
print(list(filter(lambda x:x>2,c)))

输出结果:[3, 4]
  • 1
  • 2
  • 3
  • 4

从结果知,filter函数对字典进行处理的时候,筛选的对象是字典的键,而不是字典的值。

要想满足筛选条件的字典,可用以下代码:

c = {1:'苹果',2:'华为',3:'三星',4:'小米'}
a = {i:j for i,j in c.items() if i in list(filter(lambda x:x>2,c)) }
print(a)

输出结果:{3: '三星', 4: '小米'}
  • 1
  • 2
  • 3
  • 4
  • 5

6.总结
filter函数相当于一个过滤器,和filter的中文含义一致,根据函数(或者None)来进行判断,如果参数是函数,将对应的判断对象带入函数,如果返回True则输出,否则过滤掉。如果参数是None,则将False过滤掉,即过滤掉0。

#初学笔记,难免有错误,请大家批评指正。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号