013-函数2

2022-07-31  本文已影响0人  小D修行笔记

\color{red}{递归函数、lambda表达式、abs、round、map、reduce、filter}

递归函数

应用场景

递归的特点

简单应用

# 3以内数字累加和 3 + 2 + 1
def sum_numbers(num):
    # 如果是1,直接返回1  ---- 出口
    if num == 1:
        return 1
    # 如果不是1,当前值 + 继续调用该函数,num值减1
    return num + sum_numbers(num - 1)
# 调用函数
print(sum_numbers(100))

输出结果

5050

lambda表达式

lambda 参数列表:表达式

无参数

# 无参数
fn1 = lambda: 100
print(fn1())

输出结果

100

一个参数

# 一个参数
fn1 = lambda a: a
print(fn1('hello world'))

输出结果

hello world

缺省参数

# 缺省参数
fn1 = lambda a, b, c = 100: a + b + c
print(fn1(10,20))  # 使用默认参数
print(fn1(10, 20, 30))  # 不使用默认参数

输出结果

130
60

可变参数:*args

# 可变参数:*args
fn1 = lambda *args:args
print(fn1(10, 20, 30))  # 元组

输出结果

(10, 20, 30)

可变参数:**kwargs

# 可变参数:**kwargs
fn1 = lambda **kwargs:kwargs
print(fn1(name='Tom', age=20))

输出结果

{'name': 'Tom', 'age': 20}

lambda应用

带判断的lambda

# 带判断的lambda
fn1 = lambda a, b: a if a > b else b
print(fn1(10, 20))

输出结果

20

列表数据按字典key的值排序

# 列表数据按字典key对应的value排序
students = [
    {'name': 'Tom', 'age': 20},
    {'name': 'Rose', 'age': 19},
    {'name': 'Jack', 'age': 22}
]
students.sort(key=lambda x:x['age'])
print(students)
students.sort(key=lambda x:x['age'], reverse=True)
print(students)

输出结果

[{'name': 'Rose', 'age': 19}, {'name': 'Tom', 'age': 20}, {'name': 'Jack', 'age': 22}]
[{'name': 'Jack', 'age': 22}, {'name': 'Tom', 'age': 20}, {'name': 'Rose', 'age': 19}]

高阶函数

内置函数abs()

# abs函数
a = abs(-10)
print(a)

输出结果

10

内置函数round()

# round函数
a = round(1.2)
b = round(1.8)
print(a)
print(b)

输出结果

1
2

两个函数求取绝对值后再求和计算

直接传入数据
# 先求取绝对值,再求和
def add(a, b):
    return abs(a) + abs(b)
print(add(-3, 5))

输出结果

8
传入函数作为参数
# 传入函数
def add_num(a, b, fn):
    return fn(a) + fn(b)
print(add_num(-3, 5, abs))

输出结果

8

内置高阶函数

map函数

# map函数
list1 = [1, 2, 3, 4]
def fn(a):
    return a ** 2
result = map(fn, list1)
print(list(result))

输出结果

[1, 4, 9, 16]

reduce函数

-reduce(func,lst)其中func必须要有两个参数。每次func计算的结果继续和序列中的下一个元素做累积计算

# reduce
import functools
list1 = [1, 2, 3, 4, 5]
def fn(a, b):
    return a + b
result = functools.reduce(fn,list1)
print(result)

输出结果

15

filter函数

# filter
list1 = [1, 2, 3, 4, 5, 6]
def func(x):
    return x % 2 == 0
result = filter(func, list1)
print(result)
print(list(result))

输出结果

[2, 4, 6]
上一篇 下一篇

猜你喜欢

热点阅读