Python常用内置函数
Python常用内置函数
匿名函数lambda
语法:lambda 参数1,参数2:函数体
多个参数之间逗号隔开,参数与函数体之间冒号隔开
调用方式大概有以下两种:
# 给lambda函数起一个名字,然后就象普通函数一样调用即可 fun = lambda x, y : x+y fun(3, 4) # 函数名(实参) # 直接给lambda加一个括号 (lambda x, y : x+y)(2, 3)
map
函数
语法:map(函数名/lambda表达式,可迭代对象)
,返回的是一个map
类型对象,可以用list
转为列表输出
作用就是将可迭代对象中的每个值分别作为实参传入前面的函数
list(map(lambda x:x**2, range(5))) # [0, 1, 4, 9, 16] # 和下面的结果一样 [(lambda x:x**2)(i) for i in range(5)] # [0, 1, 4, 9, 16] # 对于多个输入值的函数映射,可以通过追加迭代对象实现,多个迭代对象逗号隔开即可 list(map(lambda x, y:str(x)+'_'+y, range(5), list('abcde')))
zip
函数
将传入的等长度的迭代对象相应位置的元素打包成一个元组,返回所有位置构成的元组的zip
对象,可以用list
或tuple
查看结果
list(zip([1, 2, 3], [3, 4, 5])) # [(1, 3), (2, 4), (3, 5)] for m,n in zip([1, 2, 3], [3, 4, 5]): print(m, n) """ 1 3 2 4 3 5 """ dict(zip([1, 2, 3], [1, 1, 5])) # 当需要将两个列表对应元素做字典的键值对映射时,可以用dict+zip实现
*
的用法
*
后面接列表或者其他可迭代对象时是将可迭代对象中的元素解出来,相当于列表去掉外面的括号只保留里面的元素一样
表达式中不能单独使用*后面接变量形式,*
一般用于print语句;与zip结合;函数接受形参或者传递实参中
l = [1, 2, 4] *l # 这个会报错 print(*l) # 1 2 4 为啥放在print中就不会报错了?,这里可以看到把l中的元素解出来了 m = [2, 3, 4] zip_ = zip(m, l) list(zip_) # [(2, 1), (3, 2), (4, 4)] list(zip(*zip_)) # [(2, 3, 4), (1, 2, 4)] print(*list(zip(*zip_))) # (2, 3, 4) (1, 2, 4)
*
和**
用在函数的形参中用于接受多个未知参数或者关键字传参
# 函数形参中添加是为了在调用函数时,直接将传入的多个位置参数放入一个元组中 def fun1(*a): # 将多个位置参数放入一个元组中赋值给a print(a) def fun2(**b): # 将多个关键字传参放入一个字典中赋值给b print(b) fun1(1, 2) fun2(m='n', a='1') # 输出 """ (1, 2) {'m': 'n', 'a': '1'} """ # *后面接字典 print(*{'m':10, 'n':2}) # m n print(*{'m':10, 'n':2}.items()) # ('m', 10) ('n', 2)
*
和**
用在函数的实参中用于解开实参分别赋值给相应的形参
def f1(a, b): print(a) def f2(m, n): print(m) f1(*[1, 2]) f2(**{'m':10, 'n':2}) # 注意传入字典中的键要和形参名一致 """ 1 10 """
enumerate
函数
enumerate
是一种特殊的打包,它可以在迭代时绑定迭代元素的遍历序号:
L = list('ab') for index, value in enumerate(L): print(index, value) """ 0 a 1 b """
input
函数
变量 = input("提示性文字")
将用户输入赋值给一个变量,会把用户的输入转为字符串,即使你输入的是数字
a = input('输入一串数字,空格隔开') a # '1 2 3'
关于字符串的一些处理,可以处理接受input
的变量,因为该变量是字符串
' 234 55'.strip() # 取出字符串前后的空格 ' 234 55 1'.split() # 默认分隔符为空格(一个或多个),用空格划分字符串,并将结果放入列表中 """ '234 55' ['234', '55', '1'] """ # input搭配eval函数,可以将字符串转为数字 a = eval(input('请输入一个数字:')) # 输入999,输出就是int型数字,不是字符串了 type(a) # int # input搭配split,map,lambda使用,可以将输入的一串空格隔开的数字放入列表中 n = input('输入一串数字空格隔开') # 输入'1 2 3' n = list(map(lambda x: int(x), n.split())) # 也可以用[(lambda x: int(x))(x) for x in n.split()]代替 n # [1, 2, 3, 4]
参考链接:
[1] python函数参数中令人看不懂的*,**表示什么?
[2] Python基础
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!