1. Derivada (generativa)
1.1 Compreensão da lista
作用: 用一个表达式创建一个有规则的列表或控制一个有规律列表
1.1.2 Um pequeno teste
Requisitos: crie uma lista de 0-10
(1) loop for
item=[]
for i in range(11):
item.append(i)
print(item)
(2) loop while
i=0
itme=[]
while i<=10:
itme.append(i)
i+=1
print(itme)
(3) Compreensão da lista
item = [i for i in range(11)]
print(item)
1.1.3 Liste as compreensões com if
Requisitos: Crie uma lista de números pares de 0 a 10
(1) loop while
i=0
itme=[]
while i<=10:
if i%2==0:
itme.append(i)
i+=1
print(itme)
(2) loop for
for i in range(11):
if i%2==0:
item.append(i)
print(item)
(3) derivação
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.1.4 Loops for múltiplos implementam compreensão de lista
Requisitos: Crie uma lista da seguinte forma
[(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)]
(1) loop for
list = []
for i in range(1,3):
for j in range(3):
list.append((i,j))
print(list)
(2) derivação
list1 = [(i,j) for i in range(1,3) for j in range(0,3)]
print(list1)
1.2 Compreensão do dicionário
Caso 1: Criar um dicionário: a chave do dicionário é um número de 1 a 5, e o valor é a potência de 2 desse número
código:
dict1 = {i:i*2 for i in range(1,5)}
print(dict1)
Caso 2: mesclar duas listas em um dicionário
código:
list11=["name","age","sex"]
list22=["jack","30","男"]
dict1 = {list11[i]:list22[i] for i in range(len(list22))}
print(dict1)
注意:如果两个列表的个数相同,len统计任何一个列表长度都可以
如果两个列表的个数不相同,len统计数据多个会报错,len统计数据少的可以
Caso 3: Extraia os dados de destino no dicionário
código:
counts={"lenovo":300,"HP":200,"DELL":100}
# 需求:提取上述中电脑数量大于等于200的字典数据
cc = {key:value for key,value in counts.items()if value>=200 }
print(cc)
1.3 Definir compreensões
Requisito: Crie uma coleção, os dados são a 2ª potência da lista de distribuição
list1=[1,1,2]
código:
list1=[1,1,2]
set1={i**2 for i in list1}
print(set1)
注意:集合有数据去重功能
1.4 Resumo
O papel da compreensão: simplificar o código
Escrita derivada:
列表:[XX for XX in range()]
字典:{xx1:xx2 for ...in ...}
集合:{xx for xx in ...}
2. Recursão
2.1 Cenários de aplicações recursivas
递归是一种编程思想,应用场景:
1.在我们日常开发中,如果要遍历一个文件夹下面所有的文件,通常会使用递归来实现:
2.在后续的算法课程中,很多算法都离不开递归,例如:快速排序.
2.1.1 Características da recursão
函数内部自己调用自己
必须有出口
2.2 Aplicação
Requisitos: Calcule a soma cumulativa de números dentro de 3
código:
def sum(n):
if n==1:
return 1
return n+sum(n-1)
print(sum(3))
Extensão: Se não definido, retorno, saída
def sum_numbers(num):
return num+sum_numbers(num-1)
sum_result=sum_numbers(3)
print(sum_result)
结果:
RecursionError: maximum recursion depth exceeded 超出最大递归深度
Questão prática: A soma das potências de 2 dentro de 4, por exemplo: 4²+3²+2²+1²
def sum(n):
if n==1:
return 1
return n**2+sum(n-1)
print(sum(4))