Comprensiones y recursividad de Python

1. Derivado (generativo)

1.1 Lista de comprensión

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

1.1.2 Una pequeña prueba

Requisitos: crear una lista de 0-10

(1) para bucle

item=[]
for i in range(11):
    item.append(i)
print(item)

(2) mientras bucle

i=0
itme=[]
while i<=10:
    itme.append(i)
    i+=1
print(itme)

(3) Lista de comprensión

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

1.1.3 Listar comprensiones con if

Requisitos: Crea una lista de números pares del 0 al 10

(1) mientras bucle

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

(2) para bucle

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

(3) derivación

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 Comprensión de lista de implementación de bucles for múltiples

Requisitos: Cree una lista de la siguiente manera

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

(1) para bucle

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

(2) derivación

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

1.2 Comprensión del diccionario

Caso 1: Crear un diccionario: la clave del diccionario es un número del 1 al 5, y el valor es la potencia de 2 de este número

código:

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

Caso 2: Combinar dos listas en un diccionario

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: extraer los datos de destino en el diccionario

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 Comprensiones de conjuntos

Requisito: crear una colección, los datos son la segunda potencia de la lista de distribución

list1=[1,1,2]

código:

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

1.4 Resumen

El papel de la comprensión: simplificar el código

Escritura derivada:

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

2. Recursividad

2.1 Escenarios de aplicación recursiva

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

2.1.1 Características de la recursividad

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

2.2 Aplicación

Requisitos: Calcular la suma acumulada de números dentro de 3

código:

def sum(n):
    if n==1:
        return 1
    return n+sum(n-1)
print(sum(3))

Extensión: si no se establece volver a salir

def sum_numbers(num):
    return num+sum_numbers(num-1)
sum_result=sum_numbers(3)
print(sum_result)

结果:
RecursionError: maximum recursion depth exceeded 超出最大递归深度

Pregunta de práctica: la suma de las potencias de 2 dentro de 4, por ejemplo: 4²+3²+2²+1²

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

Supongo que te gusta

Origin blog.csdn.net/qq_44954371/article/details/126491163
Recomendado
Clasificación