• Python 推导式和递归


    一.推导式(生成式)

    1.1 列表推导式

    作用: 用一个表达式创建一个有规则的列表或控制一个有规律列表

    1.1.2 小试牛刀

    需求: 创建一个0-10的列表

    (1)for循环

    1. item=[]
    2. for i in range(11):
    3. item.append(i)
    4. print(item)

    (2)while循环

    1. i=0
    2. itme=[]
    3. while i<=10:
    4. itme.append(i)
    5. i+=1
    6. print(itme)

    (3)列表推导式

    1. item = [i for i in range(11)]
    2. print(item)

    1.1.3 带if的列表推导式

    需求: 创建一个0-10的偶数列表

    (1)while循环

    1. i=0
    2. itme=[]
    3. while i<=10:
    4. if i%2==0:
    5. itme.append(i)
    6. i+=1
    7. print(itme)

    (2)for循环

    1. for i in range(11):
    2. if i%2==0:
    3. item.append(i)
    4. print(item)

    (3)推导式

    1. item=[i for i in range(11) if i%2==0]
    2. print(item)
    1. list = [i for i in range(0,11,2)]
    2. print(list)

    1.1.4 多个for循环实现列表推导式

    需求: 创建列表如下

    [(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)]

    (1)for循环

    1. list = []
    2. for i in range(1,3):
    3. for j in range(3):
    4. list.append((i,j))
    5. print(list)

    (2)推导式

    1. list1 = [(i,j) for i in range(1,3) for j in range(0,3)]
    2. print(list1)

    1.2 字典推导式

    案例1: 创建一个字典:字典key是1-5数字,value是这个数字的2次方

    代码:

    1. dict1 = {i:i*2 for i in range(1,5)}
    2. print(dict1)

    案例2: 将两个列表合并成一个字典

    代码:

    1. list11=["name","age","sex"]
    2. list22=["jack","30","男"]
    3. dict1 = {list11[i]:list22[i] for i in range(len(list22))}
    4. print(dict1)
    1. 注意:如果两个列表的个数相同,len统计任何一个列表长度都可以
    2. 如果两个列表的个数不相同,len统计数据多个会报错,len统计数据少的可以

    案例3: 提取字典中的目标数据

    代码:

    1. counts={"lenovo":300,"HP":200,"DELL":100}
    2. # 需求:提取上述中电脑数量大于等于200的字典数据
    3. cc = {key:value for key,value in counts.items()if value>=200 }
    4. print(cc)

    1.3 集合推导式

    需求:创建一个集合,数据为下发列表2次方

    list1=[1,1,2]

    代码:

    1. list1=[1,1,2]
    2. set1={i**2 for i in list1}
    3. print(set1)
    注意:集合有数据去重功能

    1.4 总结

    推导式的作用: 简化代码

    推导式写法:

    1. 列表:[XX for XX in range()]
    2. 字典:{xx1:xx2 for ...in ...}
    3. 集合:{xx for xx in ...}

    二.递归

    2.1 递归的应用场景

    1. 递归是一种编程思想,应用场景:
    2. 1.在我们日常开发中,如果要遍历一个文件夹下面所有的文件,通常会使用递归来实现:
    3. 2.在后续的算法课程中,很多算法都离不开递归,例如:快速排序.

    2.1.1 递归的特点

    1. 函数内部自己调用自己
    2. 必须有出口

    2.2 应用

    需求: 计算3以内的数字累加和

    代码:

    1. def sum(n):
    2. if n==1:
    3. return 1
    4. return n+sum(n-1)
    5. print(sum(3))

    扩充: 如果不设置返回出口

    1. def sum_numbers(num):
    2. return num+sum_numbers(num-1)
    3. sum_result=sum_numbers(3)
    4. print(sum_result)
    5. 结果:
    6. RecursionError: maximum recursion depth exceeded 超出最大递归深度

    练习题:4以内的幂的2次方的和,例如:4²+3²+2²+1²

    1. def sum(n):
    2. if n==1:
    3. return 1
    4. return n**2+sum(n-1)
    5. print(sum(4))

  • 相关阅读:
    Vue项目搭建及使用vue-cli创建项目、创建登录页面、与后台进行交互,以及安装和使用axios、qs和vue-axios
    java计算机毕业设计高校学生社团管理源码+数据库+系统+lw文档+mybatis+运行部署
    数学建模学习(81):群粒子算法求解最值(模板)
    【Android笔记49】Android中几种常见的数据适配器的使用(ArrayAdapter、BaseAdapter、SimpleAdapter)
    如何限制一个账号只在一处登陆
    css-pseudo-class锚伪类
    vconsole本地调试工具
    C++ | 模板
    部署一个自己的GPT客户端[以ChatGPT-Next-Web为例]
    刚毕业的学长真实体验:2022年软件测试行业不再吃香?毕业即失业?
  • 原文地址:https://blog.csdn.net/qq_44954371/article/details/126491163