推导式
列表推导式
用一个表达式创建一个有规则的列表或者控制一个有规律列表。
推导式也叫生成式
例子: 创建一个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)
思路:
6=3+2
以内加数字累加和
2
以内的数字累加和
=2+1
以内加数字累加和
1
以内的数字累加和
=1
出口
练习
求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