用一个表达式创建一个有规则的列表或者控制一个有规律列表。
推导式也叫生成式
例子: 创建一个0-10的列表
- list = [i for i in range(11)]
-
- print(list)
创建一个0-10的偶数列表
- list = [i for i in range(0,11) if i%2 ==0]
- print(list)
创建列表如下:[(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)]
- list1 = [(i,j) for i in range(1,3) for j in range(0,3)]
- print(list1)
创建一个字典:字典key是1-5数字,value是这个数字的2次方
- dict1 = {i:i*2 for i in range(1,5)}
- print(dict1)
将两个列表合并一个字典
list11=["name","age","sex"]
list22=["jack","30","男"]
- list11=["name","age","sex"]
- list22=["jack","30","男"]
- dict1 = {list11[i]:list22[i] for i in range(len(list22))}
- print(dict1)
注意:
如果两个列表的个数相同,len统计任何一个列表长度都可以
如果两个列表的个数不相同,len统计数据多个会报错,len统计数据少的可以
创建一个集合,数据为下发列表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 ...}
递归的特点
函数内部自己调用自己必须有出口
应用:3以内的数字累加和
- # 3+2+1
- def sum_numbers(num):
- if num ==1:
- return 1
- return num+sum_numbers(num-1)
- sum_result=sum_numbers(3)
- print(sum_result)
练习
求1²-2²+3²-4²+...n²
- def aaa(n):
- sum=0
- for i in range(n+1):
- sum+= ((-1) ** (i + 1)) * i**2
- return sum
-
- def bbb(n):
- sum=0
- for i in range(n+1):
- if i%2==1:
- sum+=i**2
- else:
- sum-=i**2
- return sum
- #递归法
- def ccc(n):
- if n==1:
- return 1
- return ((-1)**(n-1))*n**2+aaa(n-1)
- print(aaa(5))
- print(bbb(5))
- print(ccc(5))
- #15
- #15
- #15