首页 > 编程语言 > 详细

零基础入门Python3-函数式编程(2)

时间:2019-03-06 23:07:15      阅读:180      评论:0      收藏:0      [点我收藏+]

一、filter

filter 函数和 map 函数有类似之处,两个都是把序列中的元素作用于函数中,且都由两个参数。但是 filter 函数用于判断可迭代对象中的元素是否符合函数的要求,如果符合,则返回对应的元素。也可以理解为过滤函数,俗称筛子。

filter(function or None, iterable)

# 实例1,取1-10 中所有的偶数

def func(x):

    return x%2==0

print(list(filter(func,[1,2,3,4,5,6,7,8,9,10])))

>>> [2, 4, 6, 8, 10]

# func 函数中,x%2==0,是一个判断语句,含义是,把传入的序列元素带入判断语句,如果判断结果为True,则返回该元素,如果不符合,抛弃该元素。

# 实例2,输出列表中属于字符串的元素

def func(n):

    return isinstance(n,str)

print(list(filter(func,[1,True,‘a‘,"Python",666])))

>>> [‘a‘, ‘Python‘]

>>> isinstance 函数用于判断元素是否属于 str 类型,如果判断结果为True,则返回该元素。

 

二、sorted 函数

sorted用于排序可迭代对象。

sorted(iterable, /, *, key=None, reverse=False)

- iterable 为可迭代对象

- key 为运算函数

- reverse 为排序方向

# 实例1,给list [4,8,3,1,9,6,7,2,5] 排序

a=[4,8,3,1,9,6,7,2,5]

print(list(sorted(a)))

>>> [1, 2, 3, 4, 5, 6, 7, 8, 9]

# 我们并没有给 key 赋值,所以,sorted 函数对 list 进行常规排序,也就是正常数学运算方式。 

# 实例2,给 [4,-8,3,-1,9,6,-7,2,5] 排序

L1=[4,-8,3,-1,9,6,-7,2,5]

print(list(sorted(L1,key=abs)))

>>> [-1, 2, 3, 4, 5, 6, -7, -8, 9]

# key = abs 这个参数,相当于把 list 中的元素依次传入abs函数,进行取绝对值,按照这个值进行排序,但是这并不会改变元素。

# 实例3,我们对  [4,-8,3,-1,9,6,-7,2,5] 进行倒序排序

L2=[4,-8,3,-1,9,6,-7,2,5]

print(list(sorted(L2,key=abs,reverse=True)))

>>> [9, -8, -7, 6, 5, 4, 3, 2, -1]

# 结果已经倒过来了,reverse 的含义为是否给该函数倒序,如果为 True,则进行倒序,否则不进行。

这里说明一下,key 的值是函数的本身(上节课我们提到过)。那么,我们可不可以调用自己定义的函数呢?理论上是可以的,我们实践一下。

# 实例4,我们对一组 tuple 进行排序 

L = [(‘Bob‘, 75), (‘Adam‘, 92), (‘Bart‘, 66), (‘Lisa‘, 88)]

def func(x):

        return x[0].lower()

print(sorted(L,key=func))

>>> [(‘Adam‘, 92), (‘Bart‘, 66), (‘Bob‘, 75), (‘Lisa‘, 88)]

# 实践证明,这个是可以的。

# 实例5,那能不能按照成绩来排序呢?

def func(x):

        return x[1]

print(sorted(L,key=func))

>>> [(‘Bart‘, 66), (‘Bob‘, 75), (‘Lisa‘, 88), (‘Adam‘, 92)]

# OK!

技术分享图片

关注公众号,了解更多!

零基础入门Python3-函数式编程(2)

原文:https://www.cnblogs.com/pyshadow/p/10400361.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!