Python anónima Función / clase / función de filtro / función de mapeo / recursiva / dicotomía

En este artículo se describe la función de la función / clase Python función anónima / filtro / función de mapeo / recursivo / dicotomía, este papel ejemplos de código para le dicen con gran detalle, tiene un cierto valor para las referencias, un amigo en necesidad puede referirse a
una. función lambda anónima
  con el fin de resolver algunas de las necesidades simples y función de diseño de una palabra

# 计算n的n次方
def func(n):
 return n**n
print(func(10))
f = lambda n: n**n
print(f(10))

lambda representa la función anónima. def no necesita declarar, en una palabra puede declarar una función

Sintaxis:
    nombre de la función lambda = parámetros: valor de retorno

nota:

1. Los parámetros de la función pueden ser separados por comas pluralidad de parámetro múltiple
  2. anónimo no importa cómo función compleja sólo puede escribir una línea, y devuelve los datos directamente después del final de la lógica
  de valor 3. Retorno y funciones normales, puede cualquier tipo de datos

función anónima no quiere decir algún nombre. Delante de la variable aquí es un nombre de función. La razón es que él era el anonimato cuando miramos a través de __name__ ningún nombre. Unificación llamado lambda. No hay nada de especial en el momento de la llamada lugar. como llamada a la función normal de

Dos ordenadas () función de clasificación.
  Sintaxis: ordenados (Iterable, clave = Ninguno , inverso = False)

Iterables: iterables

clave: intercalación (función de clasificación), cada elemento en el interior será parámetros de objeto iteración ordenados pasados ​​a la función a la función de tipo de resultado de cálculo.

inversa: si se trata de un flashback Es cierto retroceso :., Falso: secuencia positiva

lst = [1,5,3,4,6]
lst2 = sorted(lst)
print(lst) # 原列表不会改变
print(lst2) # 返回的新列表是经过排序的
dic = {1:'A', 3:'C', 2:'B'}
print(sorted(dic)) # 如果是字典. 则返回排序过后的key

Y las funciones utilizadas en combinación

# 根据字符串长度进行排序
lst = ["鲁班七号", "程咬金", "安琪拉", "阿珂"]
# 计算字符串长度
def func(s):
 return len(s)
print(sorted(lst, key=func))

Y lambda en combinación

# 根据字符串长度进行排序
lst = ["鲁班七号", "程咬金", "安琪拉", "阿珂"]
# 计算字符串长度
def func(s):
 return len(s)
print(sorted(lst, key=lambda s: len(s)))
lst = [{"id":1, "name":'鲁班', "age":28},
  {"id":2, "name":'安琪拉', "age":16},
  {"id":3, "name":'阿珂', "age":25}]
# 按照年龄对信息进行排序
print(sorted(lst, key=lambda e: e['age']))

Tres filtro de selección de funciones. ()

Sintaxis: filtro (. Función Iterable)

función: función para el cribado pasará automáticamente a la iterable los elementos de la función de filtro se determina según la función y luego regresar Verdadero o Falso si se retiene estos datos.

  1. mapping función ()

Iterables: iterables

lst = [1,2,3,4,5,6,7]
ll = filter(lambda x: x%2==0, lst) # 筛选所有的偶数
print(ll)
print(list(ll))
lst = [{"id":1, "name":'鲁班', "age":18},
  {"id":2, "name":'安琪拉', "age":16},
  {"id":3, "name":'阿珂', "age":17}]
fl = filter(lambda e: e['age'] > 16, lst) # 筛选年龄大于16的数据
print(list(fl))

Cuatro. Mapa correlación de funciones ()

Sintaxis: mapa (función, iterable) se puede asignar iterables cada elemento tomado función ejecutada por separado.

Calcular el cuadrado de cada elemento de la lista, devuelve una nueva lista

def func(e):
 return e*e
mp = map(func, [1, 2, 3, 4, 5])
print(mp)
print(list(mp))

lambda reescritura

print(list(map(lambda x: x * x, [1, 2, 3, 4, 5])))

El cálculo de la posición de la misma en ambas listas y datos

# 计算两个列表相同位置的数据的和
lst1 = [1, 2, 3, 4, 5]
lst2 = [2, 4, 6, 8, 10]
print(list(map(lambda x, y: x+y, lst1, lst2)))

V. recursiva

Llamar a una función en la función en sí es recursivo

  def func():
 print("我是递归")
 func()
func()

La recursividad en profundidad pitón de hasta 998

def foo(n):
 print(n)
 n += 1
 foo(n)
foo(1) 

Aplicada de forma recursiva:
  podemos utilizar la recursividad para atravesar una variedad de árboles, tales como nuestro sistema de carpetas pueden usar recursividad para recorrer todos los archivos de esa carpeta.

import os
def func(filepath,n):
 files = os.listdir(filepath) # 查案当前文件的目录
 for file in files: # 获取每一个文件名
  # 获取文件路径
  file_p = os.path.join(filepath,file)
  if os.path.isdir(file_p): # 判断file是否是一个文件夹
   print("\t"*n,file)
   func(file_p,n+1)
  else:
   print("\t"*n,file)
func("/Volumes/扩展盘/网站css",0)

VI. La búsqueda binaria

La búsqueda binaria. Cada mitad de los datos se puede excluir. Buscar la eficiencia es muy alta. Sin embargo, las limitaciones de la relativamente grande debe pedirse secuencia antes de poder utilizar la búsqueda binaria

Requisitos: debe encontrar una secuencia es una secuencia ordenada.

  # 判断n是否在lst中出现. 如果出现请返回n所在的位置
lst = [22, 33, 44, 55, 66, 77, 88, 99, 101, 238, 345, 456, 567, 678, 789]
# 非递归算法
# 使用二分法可以提高效率 前提条件有序序列
n = 88
left = 0
right = len(lst) - 1
 
while left <= right: # 边界,当右边比左边还小的时候退出循环
 mid = (left + right) // 2 # 这里必须是整除,应为索引没有小数
 if lst[mid] > n:
  right = mid - 1
 if lst[mid] < n:
  left = mid + 1
 if lst[mid] == n:
  print("找到这个数")
  break
else:
 print("没有这个数!")
# 递归来完成二分法
lst = [22, 33, 44, 55, 66, 77, 88, 99, 101, 238, 345, 456, 567, 678, 789]
def func(n,left,right):
 if left <= right:
  mid = (left + right) // 2
  if n > lst[mid]:
   left = mid + 1
   return func(n,left,right) # 递归,递归入口
  elif n < lst[mid]:
   right = mid - 1
   # 深坑,函数的返回值返回给调用者
   return func(n,left,right) # 递归
  elif lst[mid] == n:
   # print("找到了")
   return mid
 else:
  print("没找到")
  return -1 # 避免返回None
 
# 找66,左边界0,右边界len(lst) - 1
ret = func(66,0,len(lst) - 1)
print(ret)
# 递归二分法另一种形式,但是无法实现位置计算
lst = [22, 33, 44, 55, 66, 77, 88, 99, 101, 238, 345, 456, 567, 678, 789]
def func(lst,target):
 left = 0
 right = len(lst) - 1
 if left > right:
  print("没有这个数")
 middle = (left + right)//2
 if target < lst[middle]:
  return func(lst[:middle],target)
 elif target > lst[middle]:
  return func(lst[middle + 1:],target)
 elif target == lst[middle]:
  print("找到这个数了")
func(lst,101)

Core: vacaciones de los dos extremos tomar el medio un corte en la media.
  Dos algoritmos: ciclos convencionales, recursión

# 时间复杂度最低, 空间复杂度最低
lst1 = [5,6,7,8]
 lst2 = [0,0,0,0,0,1,1,1,1]
 for el in lst1:
 lst2[el] = 1
 lst2[4] == 1 # o(1)

Me dirijo a usted, para todo el mundo para recomendar una muy amplia recolección de recursos de aprendizaje pitón, haga clic para entrar , hay un programador senior antes de aprender a compartir experiencias, notas de estudio, hay una posibilidad de experiencia en los negocios, y para todo el mundo para organizar cuidadosamente un cero pitón información básica para combatir el proyecto, el día a que en la última tecnología de pitón, perspectivas, aprender a dejar un mensaje de pequeños detalles
que se resumen
contiene una pequeña serie de introducir la función Python anónima / función de clasificación / función de filtro / función de mapeo / recursivo / dicotomía, quiero ayuda

Publicado 24 artículos originales · ganado elogios 38 · Vistas a 20000 +

Supongo que te gusta

Origin blog.csdn.net/haoxun10/article/details/104761625
Recomendado
Clasificación