[Conceptos básicos de Python] Uso de las cuatro funciones básicas de mapa, reducción, lambda y filtro

función de mapa

La función de mapa asigna la secuencia especificada (iterable) de acuerdo con la función proporcionada

定义 : mapa (función, secuencia [, secuencia,…]) -> lista

Devuelve un tipo de mapa de objetos iterables.

def create_content(mes):
    return map(lambda x: x+2, mes)


def write_content_item(result):
    for i in result:
        print(i, end=" ")


content = create_content([1, 2, 3])

# 返回一个map对象
print(type(content))
# map对象具有__iter__和__next__方法,属于可迭代对象
print(content.__next__())

write_content_item(content)

content = create_content((1, 2, 3))

write_content_item(content)
'''
    map第二个参数开始必须输入的是可迭代对象
'''
try:
    content = create_content(1)
    write_content_item(content)
except Exception as e:
    print("输入了非迭代对象")
print("第二次实验------多输入参数")
content = map(lambda x, y: x + y, {
    
    1, 2}, {
    
    3, 4})
for i in content:
    print(i)

content = map(lambda x, y, z: x + y - z, {
    
    1, 2}, {
    
    3, 4}, {
    
    -1, 3})
for i in content:
    print(i)

Se puede ver en lo anterior:

  1. La secuencia de entrada [, secuencia,…] debe ser un objeto iterable
  2. El número de parámetros de la llamada de función anterior debe ser coherente con el número de objetos de iteración ingresados ​​más tarde

función de filtro

La función de filtro filtra la secuencia especificada

定义 : filtro (función o Ninguno, secuencia) -> lista, tupla o cadena

print(list(filter(lambda x: 'a' <= x <= 'z', '132a')))

reducir la función

La función de reducción acumulará los elementos en la secuencia de parámetros
(la estructura de la última llamada se pasará a la siguiente llamada)

定义 : reducir (función, secuencia [, inicial]) -> valor

Nota: la función debe tener dos parámetros función

from functools import reduce

def get_all(content):
    return reduce(lambda x, y: 10*x + y, content)

print(get_all([1, 2, 3, 4, 5]))

reducir (función (x, y), [p1, p2, p3, p4]) <=> f (f (f (p1, p2), p3), p4)

función lambda

Al pasar una función, a veces no es necesario definir explícitamente la función, es más conveniente pasar una función anónima directamente

# lambda构建匿名函数
f = lambda x, y: x + y

print(f(1, 2))

Hay ventajas en el uso de funciones anónimas:

  1. Dado que la función no tiene nombre, no se preocupe por el nombre de la función
  2. . Además, una función anónima también es un objeto de función. También puede asignar una función anónima a una variable y luego usar la variable para llamar a la función:
>>> f = lambda x: x * x
>>> f
<function <lambda> at 0x101c6ef28>
>>> f(5)
25
  1. Del mismo modo, también puede devolver funciones anónimas como valores de retorno
def build(x, y):
    return lambda: x * x + y * y

Finalmente, hagamos un pequeño caso.

Extraer enteros en una cadena

Entrada de la muestra
123asdasdfgw123
Ejemplo de salida
123123

from functools import reduce


# 1、输入一个字符串
mes = input("请输入你要转化为整数的字符串>>")
# 2、筛选出其中的数字字符
str_number = filter(lambda x: '0' <= x <= '9', mes)
# 3、将数字字符串转化为数字迭代器
number_iterator = map(lambda x: int(x), list(str_number))
# 4、将数字迭代器转化为一个整数
number = reduce(lambda x, y: 10*x + y, list(number_iterator))

print(number)

Supongo que te gusta

Origin blog.csdn.net/hide_in_darkness/article/details/109227183
Recomendado
Clasificación