0
点赞
收藏
分享

微信扫一扫

filter函数求雯波那锲数列

zhongjh 2022-03-12 阅读 50
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)
举报

相关推荐

0 条评论