函数进阶
匿名函数
函数一般适用于创建一些临时性的,小巧的函数 lambda 参数:表达式 print((lambda x: x * 2)(9)) #18 ############### def func(x,y): return x+y result1= (func(10, 2)) print(result1) #12 #lambda不需要return func2=lambda x,y:x+y result2=func2(2,4) print(result2) #6 ############### #g传入的是lambda x:x+1函数,arr传入的是[1,2,3,4]数组 def func(g, arr): return [g(x) for x in arr] arr = func(lambda x: x + 1, [1, 2, 3, 4]) print(arr)
内置函数
open
f=open("xxxx",mode='rb',encoding='utf-8') result=f.read() f.close()
len
v1=[1,2,3,4] v2='hellow world' len(v1) len(v2)
range
v1=range(10)
第一组(4个)
abs,绝对值
v1=abs(-10) print(v1) #10
pow,次方
v1=pow(2,5)计算2的5次方 pritn(v1) v2=2**5 pritn(v2)
sum,求和
data=[11,22,33,44] result=sum(data) print(result) #111
divmod,两数相除得到商和余数
v1,v2=divmod(100,7) print(v1,v2) #14 2
round,保留小数点后几位
v1=round(3.1415926,2) print(v1)
第二组(3个)
min,取最小值 ,max最大值
v1=[11,22,33] print(min(v1)) #11 print(max(v1)) #33
all,检测元素是否全部是True
v1=[11,22,33] res=all(v1) print(res)
#判断用户输入是否为空 name=input("请输入名字") passwd=input("请输入密码") kong=all([name,passwd]) if kong: print("用户名输入正确") else: print("输入为空,请检查") any,检查只要有True,就返回True
list_num=[1,2,3,0] tr=any(list_num) print(tr) #返回True
第三组(2个)
bytes
r=bytes("杨振浩",encoding='utf-8') print(r) #b'\xe6\x9d\xa8\xe6\x8c\xaf\xe6\xb5\xa9'
float
a=12 print(float(a)) #12.0
join
#join用于将序列中的元素按照指定方法拼接起来 #join方法默认只接收字符串类型的元素,所以在将列表的元素连接为字符串时,需要保证列表的元素都是字符串类型。 str1='swd' str2='aeee' res='######'.join([str1,str2]) #只能传入一个字符串,但是可以把两个字符串加入到一个列表中 print(res)
第四组(2)
ord
v1=ord('A') print(v1) #65
chr
v1=chr(65) print(v1) #A
练习
随机生成数字验证码
import random data=randon.randint(1000,9999) print(data) #3213
随机生成字母(大写)加数字验证码
import random new_list=[] for i in range(5): data = random.randint(65, 90) char=chr(data) new_list.append(char) res=''.join(new_list) print(res).
随机汉字生成
import random new_list=[] for i in range(5): data = random.randint(20208, 20495) char=chr(data) new_list.append(char) res=''.join(new_list) print(res) #伾伯佹佯係
第五组(10)
len print input open range hash,计算一个值的哈希值,参数可以是任何不可变的Python对象,如数字、字符串、元组等 type,查看数据类型 v1='jsdjad' print(type(v1)==str) #True
#callable,判断是否可执行 v1='jsdjad' res=callable(v1) print(res) #False def fun(): pass res1=callable(fun) print(res1) #True ############# def fun(): print(999) new_list=[11,22,fun] for i in new_list: if callable(i): i() else: print(i) #11 #22 #999
enumerate, goods=['手机','电脑','飞机'] for i in range(len(goods)): print(i+1,goods[i],) 1 手机 2 电脑 3 飞机 ############## goods=['手机','电脑','飞机'] for i,j in enumerate(goods,1): print(i,j) 1 手机 2 电脑 3 飞机
sorted,排序
goods=[1,12,13,1,3,43,232,52,24] print(sorted(goods)) #[1, 1, 3, 12, 13, 24, 43, 52, 232] v1=sorted(goods,reverse=True) print(v1) #[232, 52, 43, 24, 13, 12, 3, 1, 1] #如果排序的时字符串如'上海','河南',则根据字符在unicode编码中出现的先后顺序排序 goods=['河南','上海'] print(sorted(goods)) print(ord('上')) print(ord('河')) ########## goods=['2','10','1'] print(sorted(goods)) #['1', '10', '2'] ########## goods=['1.txt','2.txt','3.txt','10.txt'] def v1(x): return int(x.split('.')[0]) v2=sorted(goods,key=v1) #key对应一个函数 print(v2) #['1.txt', '2.txt', '3.txt', '10.txt'] #优化,使用lambda函数 goods=['1.txt','2.txt','3.txt','10.txt'] v1=sorted(goods,key=lambda x: int(x.split('.')[0])) print(v1) #['1.txt', '2.txt', '3.txt', '10.txt']