基础学完了,这几个python高阶函数一起来看看吧!

嗨!朋友,我是酷头

欢迎来到学习python的宝藏基地~~~

今天给大家介绍python的几种高级函数,一起来看看吧!

Lambda 函数

Lambda 函数是一种比较小的匿名函数——匿名是指它实际上没有函数名。

Python 函数通常使用如下样式来定义,

deffunction_name():

pass

但对于 lambda 函数,我们根本没为它命名。这是因为 lambda 函数的功能是执行某种简单的表达式或运算,而无需完全定义函数。

lambda 函数可以使用任意数量的参数,但表达式只能有一个。

下面我们来看一下普通函数和lambda函数的区别

普通函数求圆面积

# 求圆面积

importmath

defcirclearea(r):

result = math.pi*r*r

returnresult

r =10

print('圆面积为:', circlearea(r))

'''

圆面积为:314.1592653589793

'''

lambda函数求圆面积

# 求圆面积

importmath

r =10

result =lambdar:math.pi*r*r

print('圆面积为:', result(r))

'''

圆面积为:314.1592653589793

'''

再来看看lambda函数在列表推导式中的那些使用

指定范围内的数值列表

importrandom

# 生成10-100之间的随机列表

list  = [random.randint(10,100)forxinrange(10)]

print(list)

'''

[83, 95, 16, 43, 66, 24, 11, 92, 38, 85]

'''

根据列表条件生成指定的列表

# 每月拿出月薪的30%存定期

salary = [8000,8100,8200,8500,7800,7988,8888]

save_sal = [int(x*0.3)forxinsalary]

print('每月存款数目:', save_sal)

'''

每月存款数目: [2400, 2430, 2460, 2550, 2340, 2396, 2666]

'''

通过列表筛选生成新的列表

# 找出成绩大于等于80的学生

score = [80,81,72,75,98,79,88]

result = [xforxinscoreifx >=80]

print('成绩大于等于80的学生:', result)

'''

成绩大于等于80的学生: [80, 81, 98, 88]

'''

看它多么简单!我们执行了一些简单的数学运算,而无需定义整个函数。这是 Python 的众多特征之一,这些特征使它成为一种干净、简单的编程语言。

lambda函数还可以跟一些内置函数一起使用,接下来一起看看吧!


filter()函数


filter() 函数用于通过指定条件过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。

该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,

然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

语法如下:

filter(function, iterable)

方法1:求出当前列表内的所有奇数

# 取出列表内所有奇数

defif_odd(n):

returnn %2==1

odd_list = list(filter(if_odd, [8,9,7,5,7,6,2,4,3]))

print(odd_list)

'''

[9, 7, 5, 7, 3]

'''

方法2:求出当前列表内的所有偶数

# 取出列表内所有偶数

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

list_even = list(filter(lambdax: x %2==0, list_num))

print(list_even)

'''

[8, 6, 2, 4]

'''


map()函数

和filter()函数类似,map() 会根据提供的函数对指定序列做映射。

第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

map() 函数语法:

map(function, iterable, ...)

# 求平方

defsquare(x):

returnx*x

new_list = list(map(square, [8,9,7,5,7,6,2,4,3]))

print(new_list)

'''

[64, 81, 49, 25, 49, 36, 4, 16, 9]

'''

或者使用lambda表达式

# 求平方

new_list1 = list(map(lambdax:x*x, [8,9,7,5,7,6,2,4,3]))

print(new_list1)

'''

[64, 81, 49, 25, 49, 36, 4, 16, 9]

'''


reduce() 函数

在 Python3 中,reduce() 函数已经被从全局名字空间里移除了,

它现在被放置在 functools 模块里,

如果想要使用它,则需要通过引入 functools 模块来调用 reduce() 函数:

fromfunctoolsimportreduce

reduce()函数常用于对一个集合做一些累计操作,表示对iterable中的每个元素和上次调用函数后的结果进行运算。

来看例子

# 求列表之和

fromfunctoolsimportreduce

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

sum = reduce(lambdax, y: x+y, list)

print(sum)# 51 = 8+9+7+5+7+6+2+4+3

fromfunctoolsimportreduce

# 求0-100之和

defadd(x, y):

returnx+y

sum = reduce(add, range(1,101))

print(sum)

'''

5050

'''

Range()函数

range() 函数用于生成一个新的 range 类型,多用于 for 循环语句中,用于生成指定范围的整数。range() 函数的语法格式如下:

range(start,end,step)

range()函数接收的参数必须是整数,

不能是浮点数等其他数据类型,否则会提示类型错误。

在使用range()函数时,

如果只有一个参数,那么表示指定的是stop结束整数;

如果是两个参数,则表示指定的是start开始整数和end结束整数;

只有三个参数都存在时,最后一个参数才表示step步长。

foriinrange(11):

print(f'第{i}个数是:', i)

'''

第0个数是: 0

第1个数是: 1

第2个数是: 2

第3个数是: 3

第4个数是: 4

第5个数是: 5

第6个数是: 6

第7个数是: 7

第8个数是: 8

第9个数是: 9

第10个数是: 10

'''

将生成的序列转换成列表

print(list(range(5)))

'''

[0, 1, 2, 3, 4]

'''

print(list(range(5,16)))

'''

[5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

'''

print(list(range(0,100,20)))

'''

[0, 20, 40, 60, 80]

'''


reversed ()函数

reversed() 函数用于反转一个序列对象,将其元素从后向前颠倒构建成一个新的迭代器,reversed() 函数的语法格式如下:

reversed(seq)

反转的对象可以是序列,如列表、元组、字符串或 range 对象等。

#字符串反转

str1 ='人生短短几个秋啊'

rev_str = list(reversed(str1))

print(str1)

print(''.join(rev_str))

'''

人生短短几个秋啊

啊秋个几短短生人

'''

# 列表反转

list1 = list(range(5,11))

rev_list = list(reversed(list1))

print(list1)

print(rev_list)

'''

[5, 6, 7, 8, 9, 10]

[10, 9, 8, 7, 6, 5]

'''

tuple1 = tuple(range(1,6))

rev_tup = tuple(reversed(tuple1))

print(tuple1)

print(rev_tup)

'''

(1, 2, 3, 4, 5)

(5, 4, 3, 2, 1)

'''


sorted() 函数

sorted() 函数用于对可迭代对象进行 排序,返回一个重新排序的列表,当使用该函数进行排序后,原列表的元素顺序不变。语法格式如下:

sorted(iterable, key=None, reverse=False):

排序的对象可以是列表、字符串、字典等

grade_list = [656,602,610,618,663,695,622,645,677,640]# 10名600分以上的学生成绩列表

# 升序列表: [602, 610, 618, 622, 640, 645, 656, 663, 677, 695]

print(f"升序列表:{sorted(grade_list)}")# 升序排序

# 降序列表: [695, 677, 663, 656, 645, 640, 622, 618, 610, 602]

print(f"降序列表:{sorted(grade_list, reverse=True)}")# 降序排序


zip() 函数

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的 zip 对象。语法格式如下:

zip(*iterables) --> zip object参数说明:

iterables:可迭代对象,如列表、字典、元组、字符串等,zip() 函数允许多个可迭代对象作为参数。

当 zip() 函数没有参数时,则返回空的迭代器。

当 zip() 函数只有一个参数时,则从参数中依次取一个元素组成一个元组,再将依次组成的元组组合成一个新的迭代器。

当 zip() 函数有两个参数时,分别从两个参数中依次各取出一个元素组成元组,再将依次组成的元组组合成一个新的迭代器。

列表合并生成列表

# 生成列表

name_list = ["Amo","Paul","Jason","Seven"]

age_list = [18,19,20,21]

print(list(zip(name_list, age_list)))

'''

[('Amo', 18), ('Paul', 19), ('Jason', 20), ('Seven', 21)]

'''

列表合并生成字典

# 生成字典

name_list = ["Amo","Paul","Jason","Seven"]

age_list = [18,19,20,21]

print(dict(zip(name_list, age_list)))

'''

{'Amo': 18, 'Paul': 19, 'Jason': 20, 'Seven': 21}

'''

矩阵转换

x = [1,2,3]

y = [4,5,6]

z = [7,8,9]

print(list(zip(x, y, z)))

'''

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

'''

本文详细介绍了几种事半功倍的python高级函数,

先收藏起来。

有兴趣的读者可以尝试自己动手练习一下。

你可能感兴趣的:(基础学完了,这几个python高阶函数一起来看看吧!)