python基础 Day13
## <centre>python Day13</centre>
-
匿名函数(一句话函数,比较简单的函数)
-
func=lambda a,b:a+b print(func(1,2)) ###结果:3
-
func=lambda a:(a[0],a[2]) print(func("dsfds"))
-
func_max=lambda a,b:a if a>b else b print(func_max(3,2))
-
-
内置函数扩展
-
bin将10进制转换为二进制并返回
-
oct将10进制转化为八进制字符并返回
-
hex将10进制转化为16进制并返回
-
divmod :返回除数与被除数的结果
print(divmod(10,3)) ###结果(3, 1)
-
round:保留浮点数的小数位数
print(round(3.2243252543,2)) ###结果3.22
-
pow:求x的y次幂
print(pow(2,3)) ##结果 8
-
-
bytes
s1="电话卡"
print(bytes(s1,encoding="utf-8"))
##结果 b'\xe7\x94\xb5\xe8\xaf\x9d\xe5\x8d\xa1'
-
chr:输入位置数字找出来其对应的字符
print(chr(97)) ## a
-
reversed返回的是一个翻转的迭代器
list1=[i for i in range(10)] obgj=reversed(list1) print(obgj) print(list(obgj)) ###结果 :<list_reverseiterator object at 0x000001DD79831948> ## [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
-
zip 拉链的方法
li=[1,23,4,4,55] tu1=("太白","猴哥","单反") s1="fsfsdfdsf" print(list(zip(li,tu1,s1))) ###结果[(1, '太白', 'f'), (23, '猴哥', 's'), (4, '单反', 'f')]
-
min,max的扩展用法
#以绝对值的形式输出列表的最小值 ###凡是可以加key的,它会自动的将可迭代对象中的每个元素按照顺序传入对应的函数中 li=[1,23,4,4,55,-1] print(min(li,key=abs))##key 后面跟着函数 ##1 ###### l11=[('太白',18),("alex",73),("wusir",35),("口天吴",41)] def func(a): return a[1] print(min(l11,key=func))#min替换成sorted也是可以的 ####结果:('太白', 18)
-
filter 列表推导式的筛选模式
l1=[1,2,3,4,55] l2=list(filter(lambda x:x>3,l1)) print(l2) ###结果[4, 55]
-
map 列表推导式的循环模式,吧列表中中每个元素输入进去
l1=[1,2,3,4,55] ret=map(lambda x:x**2,range(1,6)) print(list(ret)) ##结果是迭代器的模式
-
闭包
-
内存函数对外层函数非全局变量的引用(使用),就会形成闭包。被引用的非全局变量也称做自由变量,这个自由变量会与内层函数产生一个绑定关系,自由变量不会再内存中消失。(保证数据的安全)
-
闭包只能存在嵌套函数中
def make_average(): l1=[] def average(new_price): l1.append(new_price) total=sum(l1)/len(l1) return total return average avg=make_average() print(avg(1000)) print(avg(2000))
-
-
作业
-
看代码写结果
def add(n,i): return n+i def test(): for i in range(4): yield i g=test() for n in [1,10]: g=(add(n,i) for i in g) print(list(g)) ###结果 [20, 21, 22, 23] ####解析 因为第二次循环n一直就是10了 list(g)=list((add(10,i) for i in add(10,i) for i in test())) list(g)=list((add(10,i) for i in add(10,i) for i in test[0,1,2,3])) list(g)=list((add(10,i) for i in ([10,11,12,13])
-
用map来处理字符串列表,把列表中所有人都变成sb,比如fengchao_sb
name=["zhuxiayu","fengchao","wusir"] new_name=map(lambda x:x+"_sb",name) print(list(new_name)) ###结果 ['zhuxiayu_sb', 'fengchao_sb', 'wusir_sb']
-
用map来处理下述l,然后用lsit得到一个新的列表,列表中每人的名字都是sb结尾
l=[{"name":"服务器"},{"name":"服务器2"}] new_l=map(lambda x:x["name"]+"sb",l) print(list(new_l)) ###结果 ['服务器sb', '服务器2sb']
-
写代码,最终得到的结果是(每个元组第一个元素>2,第三个*至少是4个)
l1=[1,2,3,4,5,6,7] l2=["oldboy","axle","wusir","白天","天日"] tu=("**","***","*****","********") new=zip(l1,l2,tu) new_list=list(new) ret=filter(lambda x:x[0]>2 and len(x[2])>3,new_list) print(list(ret)) ###结果[(3, 'wusir', '*****'), (4, '白天', '********')]
-
将l1按照列表中每个字典的values大小进行排序,形成一个新的列表
l1=[{'sales_volumn':0}, {'sales_volumn':108}, {'sales_volumn':337}, {'sales_volumn':475}, {'sales_volumn':396}, {'sales_volumn':172}, {'sales_volumn':9}, {'sales_volumn':58}, {'sales_volumn':272}, {'sales_volumn':456}, {'sales_volumn':440}, {'sales_volumn':239}, ] print(list(sorted(l1,key=lambda x:x["sales_volumn"])))
-
看代码写结果
v=[lambda :x for x in range(10)] print(v) print(v[0]) ##结果:[<function <listcomp>.<lambda> at 0x000002AA60EBE168>, <function <listcomp>.<lambda> at 0x000002AA60EB93A8>, <function <listcomp>.<lambda> at 0x000002AA60FC4C18>, <function <listcomp>.<lambda> at 0x000002AA610B5A68>, <function <listcomp>.<lambda> at 0x000002AA610BC5E8>, <function <listcomp>.<lambda> at 0x000002AA610BCC18>, <function <listcomp>.<lambda> at 0x000002AA610C1EE8>, <function <listcomp>.<lambda> at 0x000002AA610C1438>, <function <listcomp>.<lambda> at 0x000002AA620BF3A8>, <function <listcomp>.<lambda> at 0x000002AA620BF438>] <function <listcomp>.<lambda> at 0x000002AA60EBE168>
-
写一个函数完成三次登录功能,用户的用户名密码从一个文件register中取出,register文件包含多个用户名,密码,用户名密码通过|隔开,每个人的用户名密码占用文件中一行,完成三次实验,三次实验不成功则登录失败,失败则返回false
def get_user_dict(): user_dict={} with open("register.txt",encoding="utf-8",mode="r") as file: for line in file: username1,password1=line.strip("\n").split("|") user_dict[username1]=password1 return user_dict def log_in(): user_dict=get_user_dict() count=1 while count<4: username=input("please input your name:").strip("") password=input("please input your password").strip("") if username in user_dict and password==user_dict[username]: print("登录成功") return True else: count+=1 else: return False log_in()
-