作用: 用一个表达式创建一个有规则的列表或控制一个有规律列表
需求: 创建一个0-10的列表
(1)for循环
- item=[]
- for i in range(11):
- item.append(i)
- print(item)
(2)while循环
- i=0
- itme=[]
- while i<=10:
- itme.append(i)
- i+=1
- print(itme)
(3)列表推导式
- item = [i for i in range(11)]
- print(item)
需求: 创建一个0-10的偶数列表
(1)while循环
- i=0
- itme=[]
- while i<=10:
- if i%2==0:
- itme.append(i)
- i+=1
- print(itme)
(2)for循环
- for i in range(11):
- if i%2==0:
- item.append(i)
- print(item)
(3)推导式
- item=[i for i in range(11) if i%2==0]
- print(item)
- list = [i for i in range(0,11,2)]
- print(list)
需求: 创建列表如下
[(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)]
(1)for循环
- list = []
- for i in range(1,3):
- for j in range(3):
- list.append((i,j))
- print(list)
(2)推导式
- list1 = [(i,j) for i in range(1,3) for j in range(0,3)]
- print(list1)
案例1: 创建一个字典:字典key是1-5数字,value是这个数字的2次方
代码:
- dict1 = {i:i*2 for i in range(1,5)}
- print(dict1)
案例2: 将两个列表合并成一个字典
代码:
- list11=["name","age","sex"]
- list22=["jack","30","男"]
- dict1 = {list11[i]:list22[i] for i in range(len(list22))}
- print(dict1)
- 注意:如果两个列表的个数相同,len统计任何一个列表长度都可以
- 如果两个列表的个数不相同,len统计数据多个会报错,len统计数据少的可以
案例3: 提取字典中的目标数据
代码:
- counts={"lenovo":300,"HP":200,"DELL":100}
-
- # 需求:提取上述中电脑数量大于等于200的字典数据
- cc = {key:value for key,value in counts.items()if value>=200 }
- print(cc)
需求:创建一个集合,数据为下发列表2次方
list1=[1,1,2]
代码:
- list1=[1,1,2]
- set1={i**2 for i in list1}
- print(set1)
注意:集合有数据去重功能
推导式的作用: 简化代码
推导式写法:
- 列表:[XX for XX in range()]
- 字典:{xx1:xx2 for ...in ...}
- 集合:{xx for xx in ...}
- 递归是一种编程思想,应用场景:
- 1.在我们日常开发中,如果要遍历一个文件夹下面所有的文件,通常会使用递归来实现:
- 2.在后续的算法课程中,很多算法都离不开递归,例如:快速排序.
- 函数内部自己调用自己
- 必须有出口
需求: 计算3以内的数字累加和
代码:
- def sum(n):
- if n==1:
- return 1
- return n+sum(n-1)
- print(sum(3))
扩充: 如果不设置返回出口
- def sum_numbers(num):
- return num+sum_numbers(num-1)
- sum_result=sum_numbers(3)
- print(sum_result)
-
- 结果:
- RecursionError: maximum recursion depth exceeded 超出最大递归深度
练习题:4以内的幂的2次方的和,例如:4²+3²+2²+1²
- def sum(n):
- if n==1:
- return 1
- return n**2+sum(n-1)
- print(sum(4))