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)









