filter函数求雯波那锲数列

本文介绍如何利用Python的filter函数结合动态规划计算雯波那契数列的前100项,深入理解算法与编程技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.首先有一个0-100的列表[0, 1, 2, 3.....100]
选出斐波那契数列形成一个[0,1,1,2,3,5,8,13,21,34,55,89]
选出其中的三的配数.【3,21】
最后相加24

# 生成0-100的列表

def get_lst1():
    lst1 = []
    for i in range(1, 101):
        lst1.append(i)
    # print(lst1)
    return lst1
# 斐波那契递归函数
def fib_recur(n):
    if n in (1, 2):
        return n
    return fib_recur(n - 2) + fib_recur(n - 1)
# 获取1-100内得斐波那契数列
def get_fib_lst2():
    # 收集斐波那契数列列表
    lst2 = []
    i = 1
    while True:
        rst = fib_recur(i)
        # 如果返回得结果大于100则终止循环
        if rst > 100:
            break
        lst2.append(rst)

        i += 1
    return lst2
# 过滤函数 选出斐波那契数列
def func1(x):
    lst2 = get_fib_lst2()
    # print("lst2:", lst2)
    if x in lst2:
        return x


# 过滤函数 选出斐波那契数列中3的倍数
def func2(y):
    if y % 3 == 0:
        return y


# 相加
def func3(a, b):
    return a + b


if __name__ == '__main__':
    lst1 = get_lst1()
    print("lst1:", lst1)

    # 从lst1中获取斐波那契列表
    lst3 = list(filter(func1, lst1))
    print("lst3:", lst3)

    lst4 = list(filter(func2, lst3))
    print("lst4:", lst4)

    # 相加函数得到最后的结果
    result = functools.reduce(func3, lst4)
    print("相加结果", result)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值