学习python的第十一天

斐波那契数列:

# 1.必须要有出口
# 2.必须自己调用自己

def fib_func(i):
    # 初始值设置 如果n是0 或1  则直接返回本身
        if i == 0 or i == 1:
            # 只要执行return 本次函数调用终止
            return i
        return fib_func(i-2) + fib_func(i-1)

# 传递一个数 然后就是打印前几位
for x in range(12):
    print(fib_func(+x), end=" ")

la'mbda:

# 一个函数只有一行代码
def func1():
    return 100
print(func1())

# 使用lambda表达式  将上面的代码 转化为一行代码
func2 = lambda: 200
print(func2())

# 普通方法实现
def func1(a , b):
    return a + b
print(func1(2, 3))

# :前面传递的是参数 后面是返回值
func2 = lambda a, b: a + b
print(func2(3, 4))

# 无参数
print(lambda: 100)  # 这是函数
print((lambda: 100)())   # 这是函数的调用

print((lambda a: a)("hello World"))

print((lambda a, b, c=100: a + b + c)(200, 300))

# 可变参数  传递的所以参数都使用args接收 *必不可少
print((lambda *args: args)(100, 150, 200))

# 可变参数 传递的是键值对
print((lambda **kwargs: kwargs)(name="python", age=27))

# 带判断的返回值
# 使用普通函数返回较大值
def func1(a, b):
    # 比较大小
    if a >= b:
        return a
    else:
        return b
result = func1(100, 500)
print(result)

# 一行代码返回较大值
def func1(a, b):
    # 比较大小
    return a if a >= b else b

result = func1(1000, 500)
print(result)

# 带有if判断的lambda表达式
func2 = lambda a, b: a if a >= b else b
print(func2(233, 89))

# 定义一个学生列表 然后对他进行排序
students = [
    {"name": "ll", "age": 88},
    {"name": "ss", "age": 5},
    {"name": "dd", "age": 3}
]

# def func1(c):
#     return c["age"]

# func2 = lambda c: c["age"]
# students 会把数据传递给func1
# 返回值 会按照升序进行排序
students.sort(key=lambda x: x["age"], reverse=False)
print(students)
# 降序进行排序
students.sort(key=lambda x: x["age"], reverse=True)
print(students)




a = -9
# abs 是绝对值函数
b = abs(a)
print(b)

def func1(a, b, c):
    # f = abs
    # print(a, b, c)
    print(a ,b ,c)
    return c(a) + c(b)
# abs 这个函数传递给f 将函数作为参数进行传递
result = func1(-6, 7, abs)
print(result)




lst = [1, 2, 3, 4, 5]
# 计算x的平方
def func1(x):
    return x ** 2

# # 普通方法
# lst1 = []
# for i in lst:
#     print(func1(i), end=" ")
#     lst1.append(func1(i))
# print(lst1)

# 返回的是一个map对象
# python2 result是列表
# python3 result是迭代器
result = map(func1, lst)
print(result)

# 迭代器循环获取
for i in result:
    print(i)

# 迭代器转换为列表
result2 = list(result)
print(result2, type(result2))

'''
迭代器和列表的区别
迭代器和列表的本质都是容器 
迭代器循环获取之后 里面的内容就被拿走了,就是空的容器
列表循环获取之后 里面的内容还在,列表持久化了。

迭代器,CPU去迭代器中选择工作,工作完成后不会重复执行同一个工作
【工作1, 工作2, 工作3】

 
'''



import functools
lst = [1, 2, 3, 4, 5]

def func1(a,b):
    return a + b


# lst中的值 依次传递给func1
# reduce 会将lst 中的前两个数相加, 然后在和第三个数 一起传递给func1 然后在结果在和第四个数···
result = functools.reduce(func1, lst)
print(result)


# lst = [1, 2, 3, 4 , 5, 6, 7, 8, 9,10]
#
# def func1(x):
#     return x % 2 == 0
#
# # 过滤函数 返回一个filter对象
# result = filter(func1,lst)
# print(result)
#
# print(list(result))

!!!!!!!!!!!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值