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:
- La secuencia de entrada [, secuencia,…] debe ser un objeto iterable
- 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:
- Dado que la función no tiene nombre, no se preocupe por el nombre de la función
- . 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
- 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)