Python基础学习Day5(for循环、推导式、函数)

    技术2024-08-04  70

    文章目录

    for循环嵌套循环for循环在列表中的应用break语句continue语句 else语句循环代码优化使用zip()并行迭代推导式创建序列字典推导式集合推导式生成器推导式(生成元组) 同心圆画法函数Python函数的分类要点: 返回值

    for循环

    for 变量 in 可迭代对象 循环体语句

    for x in (20,30,40): print(x*3) for x in "abcdefg":#字符串中的字母 print(x) for x in range(5): print(x) d={'name':'Meidi','age':22,'job':'student'} for x in d:#默认打印键 print(x) for x in d.keys():#打印键 print(x) for x in d.values():#打印值 print(x) for x in d.items():#打印成对信息 print(x) sum_all=0 sum_odd=0#100以内的奇数和 sum_even=0#100以内的偶数和 for x in range(101): sum_all+=x if x%2==1: sum_odd+=x else: sum_even+=x print("1-100累加和{0},奇数和{1},偶数和{2}".format(sum_all,sum_odd,sum_even))

    嵌套循环

    #嵌套循环 for x in range(5): for y in range(5): print(x,end="\t") print()#起到换行的作用 #打印九九乘法表 for m in range(1,10): for n in range(1,m+1): print("{0}*{1}={2}".format(m,n,(m*n)),end="\t") print()

    for循环在列表中的应用

    #for循环在列表中的应用 tb=[] r1={"name":"G1","age":18,"salary":30000,"city":"北京"} r2={"name":"G2","age":19,"salary":20000,"city":"南京"} r3={"name":"G3","age":20,"salary":10000,"city":"天津"} tb=[r1,r2,r3] for x in tb: if x.get("salary")>15000: print (x)

    break语句

    break语句用于while和for循环,用来结束整个循环。当有嵌套循环时,break语句只能跳出最近一层的循环。

    #测试break while True: a=input("请输入一个字符(输入Q或者q时退出):") if a=="q" or a=="Q": print("循环结束,退出") break else: print(a)

    continue语句

    结束本次循环,进行下一次。多个循环嵌套时,continue也是应用于最近一层循环。

    #测试continue;要求输入员工的薪资,若薪资小于0则重新输入。最后打印出录入员工的数量和薪资明细,以及平均工资 empNum=0 salarySum=0 salarys=[] while True: s=input("请输入员工的工资(按Q或q结束)") if s.upper()=='Q': break if float(s)<0: continue empNum+=1 salarys.append(float(s)) salarySum+=float(s) print("员工数{0}".format(empNum)) print("录入薪资:",salarys) print("平均工资{0}".format(salarySum/empNum))

    else语句

    while、for循环可以附带一个else语句(可选)。如果for、while语句没有被break语句结束,则会执行else子句,否则不执行,语法格式如下: while 条件表达式: 循环体 else: 语句块 或者: for 变量 in 可迭代对象: 循环体 else: 语句块

    #测试循环中的else语句 salarySum=0 salarys=[] for i in range(4): s=input("请输入一共4名员工的薪资(按Q或q中途结束)") if s.upper()=='Q': print("录入完成,退出") break if float(s)<0: continue salarys.append(float(s)) salarySum+=float(s) else: print("您已经全部录入4名员工的薪资") print("录入薪资:",salarys) print("平均薪资{0}".format(salarySum/4))

    循环代码优化

    1.尽量减少循环内部不必要的计算。 2.嵌套循环中,尽量减少内层循环的计算,尽可能向外提。 3.局部变量查询较快,尽量使用局部变量。

    其他优化手段: 1.连接多个字符串,使用join而不用+ 2.列表进行元素插入和删除,尽量在列表尾部操作

    import time start=time.time() for i in range(10000): result=[] for m in range(10000): result.append(i*1000+m*100) end=time.time() print("耗时:{0}".format(end-start)) start2=time.time() for i in range(1000): result=[] c=i*1000#内层循环丢到外层 for m in range(10000): result.append(c+m*100) end2=time.time() print("耗时:{0}".format(end2-start2))

    使用zip()并行迭代

    我们可以通过zip()对多个序列进行并行迭代,zip()函数在最短序列“用完”时就会停止。

    #测试并行迭代 names=("ZZ","MM","DD","AA") ages=(10,20,30,22) jobs=("老师","学生","程序员") for name,age,job in zip(names,ages,jobs): print("{0}--{1}--{2}".format(name,age,job)) for i in range(3): print("{0}--{1}--{2}".format(names[i],ages[i],jobs[i]))

    推导式创建序列

    简化代码、效率高 [表达式 for item in 可迭代对象] {表达式 for item in 可迭代对象 if 条件判断}

    #测试推导式 y=[x*2 for x in range(1,5)] print(y) #等价于下面 y=[] for x in range(1,5): y.append(x*2) print(y)

    #测试推导式 y=[x*2 for x in range(1,50) if x%5==0] print(y) y=[] for x in range(1,50): if x%5==0: y.append(x*2) print(y) cells=[(row,col) for row in range(1,10) for col in range(1,10)] print(cells)

    字典推导式

    {key_expression : value_expression for 表达式 in 可迭代对象} 类似于列表表达式,字典推导也可以增加if条件判断、多个for循环。

    #字典推导式 my_text='i love you,i love sxt,i love meidi' char_count={c:my_text.count(c) for c in my_text} print(char_count)

    集合推导式

    {表达式 for item in 可迭代对象} {表达式 for item in 可迭代对象 if 条件判断}

    生成器推导式(生成元组)

    #生成器推导式(生成元组),只能一次 gnt=(x for x in range(4)) #print(tuple(gnt)) #print(tuple(gnt)) for x in gnt:#gnt是可迭代对象,生成器是可迭代的对象 print(x,end=",") print(tuple(gnt))

    一个生成器只能用一次

    同心圆画法

    import turtle t=turtle.Pen() my_color=("red","green","yellow","black") t.width(4) t.speed(5)#10最快 for i in range(10):#0 1 2 3 4 t.penup() t.goto(0,-i*10)#0 -100 -200 -300 -400 t.pendown() t.color(my_color[i%len(my_color)]) t.circle(15+i*10)#100 200 300 400 500 turtle.done()#程序执行完,窗口仍然在

    函数

    Python函数的分类

    内置函数标准库函数第三方库函数用户自定义函数

    要点:

    1.我们使用def来定义函数,然后就是一个空格和函数名称; (1)Python执行def时,会创建一个函数对象,并绑定到函数名变量上。 2.参数列表 (1)圆括号内是形式参数列表,有多个参数则使用逗号隔开 (2)形式参数不需要声明类型,也不需要指定函数返回值类型 (3)无参数,也必须保留空的圆括号 (4)实参列表必须与形参列表一一对应 3.return返回值 (1)如果函数体中包含return语句,则结束函数执行并返回值。 (2)如果函数体中不包含return语句,则返回None值。 4.调用函数之前,必须要先定义函数,即先调用def创建函数对象 (1)内置函数对象会自动创建 (2)标准库和第三方库函数,通过import导入模块时,会执行模块中的def语句

    def printMax(a,b): """用于比较两个数的大小,打印较大的值""" if a>b: print(a,"较大值") else: print(b,"较大值") printMax(10,20) printMax(200,300) help(printMax.__doc__)

    返回值

    return返回值要点: 1.如果函数体中包含return语句,则结束函数执行并返回值 2.如果函数体中不包含return语句,则返回None值 3.要返回多个返回值,使用列表、元组、字典、集合将多个值“存起来”即可

    def add(a,b): print("计算两个数的和:{0},{1},{2}".format(a,b,(a+b))) return a+b def test02(): print("sss") print("aaa") return #return两个作用:1.返回值 2.结束函数的执行 print("hello") def test03(x,y,z): return [x*10,y*10,z*10] c=add(30,40) print(add(30,40)*10) d=test02() print(d) print(test03(4,3,2))

    Processed: 0.011, SQL: 9