嗨!朋友,我是酷头
欢迎来到学习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高级函数,
先收藏起来。
有兴趣的读者可以尝试自己动手练习一下。