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对象,可以用listtuple查看结果

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基础

posted @   rain-1227  阅读(60)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
点击右上角即可分享
微信分享提示