用好这几个Python高阶函数!效率翻倍!

python中有许多内置函数,不像print那么广为人知,但它们却异常的强大,用好了可以大大提高代码效率。

一、编程的3种方法:

• 面向过程:将一个大问题分成若干个小问题进行逐一的处理•函数式编程:是将编程语言的函数和数学意义的函数相结合,如y=2*x+1相当于

def func(x):
    return 2 * x + 1

• 面向对象:将事物的本质通过建立一系列模型来体现出事物的本质和特征

二、高阶函数:

1、高阶函数的定义:

• 函数接收的参数可以是另一个函数的函数名•在函数的返回值中包含于一个函数名

2、3个常用的内置高阶函数:

2.1:map()函数:

•将列表[1, 2, 3, 4]中的每个元素进行加10

方法1:

list01 = [1, 2, 3, 4]

def func(x):
    return x + 10

def add_num(function, array):
    res = []
    for i in array:
        res.append(function(i))
    return res

print(add_num(func, list01))

方法2:


list01 = [1, 2, 3, 4]

def add_num(function, array):
    res = []
    for i in array:
        res.append(function(i))
    return res

print(add_num(lambda x:x+10, list01))

使用map()函数:


list01 = [1, 2, 3, 4]

print(list(map(lambda x:x+10, list01)))

运行结果:

[11, 12, 13, 14]

map()函数的用法: map(处理方法, 可迭代对象)

功能: 对可迭代对象中的每个元素按照指定的处理方法进行操作,最后以迭代类型输出,可将其转换为相应的数据类型进行输出

2.2:filter()函数:

•将列表[{class:101, name:zhang},{class:102, name:li},{class:201, name:wang},{class:202, name:zhao}]中的年级是一年级的删除

方法1:


def func(x):
    return x[class][0]

def class_list(function, array):
    new_list = []
    for i in array:
        if function(i) != 1:
            new_list.append(i)
    return new_list

print(class_list(func, student_list))

方法2:

def class_list(function, array):
    new_list = []
    for i in array:
        if function(i) != 1:
            new_list.append(i)
    return new_list

print(class_list(lambda x:x[class][0], student_list))

filter()方法:

print(list(filter(lambda x:x[class][0] != 1, student_list)))``   

运行结果:

[{‘class’: ‘201’, ‘name’: ‘wang’}, {‘class’: ‘202’, ‘name’: ‘zhao’}]

filter()函数的用法: filter(处理方法, 可迭代对象)

“处理方法”得到的结果必须是一个布尔值

功能: 将可迭代对象中的元素按照指定的处理方法进行删选后以迭代类型输出,可将其转换为相应的数据类型进行输出

2.3:reduce()函数:

在Python2中可直接使用reduce()函数,在Python3中需要导入functools模块后才能使用。

•将列表[2, 3, 4, 10]中的元素跟指定的初始值(可选)累乘后进行输出

方法1:情况1:没有指定初始值

def func(x, y):
    return x * y

def times(function, array, init=None):
    if init == None:
        res = 1
    else:
        res = init
    for num in array:
        res = function(res, num)
        # res *= num
    return res

print(times(func, list01))

情况2:指定初始值

def func(x, y):
    return x * y

def times(function, array, init=None):
    if init == None:
        res = 1
    else:
        res = init
    for num in array:
        res = function(res, num)
        # res *= num
    return res

print(times(func, list01, 100))

方法2:情况1:没有指定初始值


def times(function, array, init=None):
    if init == None:
        res = 1
    else:
        res = init
    for num in array:
        res = function(res, num)
        # res *= num
    return res

print(times(lambda x,y:x*y, list01))

情况2:指定初始值

def times(function, array, init=None):
    if init == None:
        res = 1
    else:
        res = init
    for num in array:
        res = function(res, num)
        # res *= num
    return res

print(times(lambda x,y:x*y, list01, 100))

reduce()方法:情况1:没有指定初始值


from functools import reduce

print(reduce(lambda x,y:x*y, list01))

情况2:指定初始值

from functools import reduce

print(reduce(lambda x,y:x*y, list01, 100))  

reduce()函数用法: reduce(处理方法, 可迭代对象, 初始值)

功能: 将可迭代对象中的元素按照制定的处理方法进行运算后输出

set()

当需要对一个列表进行去重操作的时候,set()函数就派上用场了。

obj = ['a','b','c','b','a']``print(set(obj))``# 输出:{'b', 'c', 'a'}``   ``   

set([iterable])用于创建一个集合,集合里的元素是无序且不重复的

集合对象创建后,还能使用并集、交集、差集功能。

A = set('hello')``B = set('world')``   ``A.union(B) # 并集,输出:{'d', 'e', 'h', 'l', 'o', 'r', 'w'}``A.intersection(B) # 交集,输出:{'l', 'o'}``A.difference(B) # 差集,输出:{'d', 'r', 'w'}``   

eval()

之前有人问如何用python写一个四则运算器,输入字符串公式,直接产生结果。

eval()来做就很简单:

eval(str_expression)作用是将字符串转换成表达式,并且执行。

a = eval('[1,2,3]')``print(type(a))``# 输出:<class 'list'>``   ``b = eval('max([2,4,5])')``print(b)``# 输出: 5``   ``   

sorted()

在处理数据过程中,我们经常会用到排序操作,比如将列表、字典、元组里面的元素正/倒排序。

这时候就需要用到sorted() ,它可以对任何可迭代对象进行排序,并返回列表。

对列表升序操作:

a = sorted([2,4,3,7,1,9])``print(a)``# 输出:[1, 2, 3, 4, 7, 9]``   

对元组倒序操作:


sorted((4,1,9,6),reverse=True)
print(a)
# 输出:[9, 6, 4, 1]

使用参数:key,根据自定义规则,按字符串长度来排序:


chars = ['apple','watermelon','pear','banana']
a = sorted(chars,key=lambda x:len(x))
print(a)
# 输出:['pear', 'apple', 'banana', 'watermelon']

根据自定义规则,对元组构成的列表进行排序:


tuple_list = [('A', 1,5), ('B', 3,2), ('C', 2,6)]
# key=lambda x: x[1]中可以任意选定x中可选的位置进行排序
a = sorted(tuple_list, key=lambda x: x[1]) 
print(a)
# 输出:[('A', 1, 5), ('C', 2, 6), ('B', 3, 2)] 

reversed()

如果需要对序列的元素进行反转操作,reversed()函数能帮到你。

reversed()接受一个序列,将序列里的元素反转,并最终返回迭代器。


a = reversed('abcde')
print(list(a))
# 输出:['e', 'd', 'c', 'b', 'a']

b = reversed([2,3,4,5])
print(list(b))
# 输出:[5, 4, 3, 2]

相关资料已经整理好了

- END -


除上述资料外,还附赠全套Python学习资料,包含面试题、简历资料等具体看下方。

🎁福利🎁 全网最全《Python学习资料》免费赠送🆓!

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python学习路线

python学习路线图1
在这里插入图片描述

二、Python基础学习
1. 开发工具

2. 学习笔记

在这里插入图片描述

3. 学习视频

在这里插入图片描述

三、Python小白必备手册

图片

四、数据分析全套资源

在这里插入图片描述

五、Python面试集锦
1. 面试资料

在这里插入图片描述

在这里插入图片描述

2. 简历模板

在这里插入图片描述

因篇幅有限,仅展示部分资料,添加上方即可获取

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值