Python递归实现①把嵌套列表压平为一层列表②返回嵌套列表中某元素出现的个数③返回第n个斐波那契数
一、把嵌套列表压平为一层列表
def flatten(nested_list):'''这是把嵌套列表压平为简单列表并返回的函数:参数 nested_list:一个嵌套列表'''#先定义一个空列表,用于存储我们提出出来的元素,# 这也是最终要返回的那个列表new_list = []#遍历原始的嵌套列表for element in nested_list:#如果当前元素是一个列表if type(element) is list:#调用flatten函数本身,就把它返回的结果先想象成一个已经整理好的一层列表#然后拼接到我们最终要返回的列表上new_list+=flatten(element)#如果当前元素不是列表,那正是我们要提取出来的元素#把它装进列表,拼接到我们最终要返回的列表上else:new_list+=[element]#返回我们整理好的新列表return new_list
二、返回某个元素在一个嵌套列表中出现的次数
def count(target,nested_list):'''返回嵌套列表中某元素出现的次数的函数:参数 target:我们想查看的目标元素:参数 nested_list:一个嵌套列表'''#初始化计数器number = 0 #遍历给定的嵌套列表for element in nested_list:#如果当前元素是一个列表if type(element) is list:#调用count函数本身,就想先成它已经数好了这个子列表中有多少个目标元素了#把它的返回值(必定是一个整数)加到我们的计数器上number += count(target,element)#如果当前元素不是列表,那就是一个普通的元素else:#把这个普通的元素和我们的目标元素相比较,得出布尔值#这里是一个小窍门,布尔值可以直接当做数字1或者0参与加法运算number += (target == element)#返回技术结果return number
三、返回斐波那契数列中的第n个数
def fib(n):'''返回斐波那契数列中的第n个元素:参数 n:数列中元素的序号,注意,需要从0开始'''#开头的两个元素单独处理if n<=1:return n#斐波那契数列的特点就是一个元素等于它前面两个元素之和t = fib(n-1)+fib(n-2)return t
PS:上面这个生成斐波那契数的递归函数实在是太——慢——啦—— 还不如下面循环的方式快:
def fib(n):'''返回斐波那契数列中的第n个元素:参数 n:数列中元素的序号,注意,需要从0开始'''#这是一个存放斐波那契数列的列表,前两个元素先手动填充了fib_list = [0,1]#当n小于1的时候,就把n当做索引,取出列表中相应的元素即可if n <= 1:return fib_list[n]#n大于1的时候else:#循环n-1次for i in range(n-1):#每次都把数列中的最后两个元素拿出来相加,就得到一个新元素#新元素一定要记得追加到列表的末尾,这样这个数列就会越来越长fib_list.append(fib_list[-1]+fib_list[-2])#而我们要的元素,就是数列中最后(新)的那一个return fib_list[-1]
如果这篇博文帮到了你,就请给我点个赞吧(#^.^#)
有疑问也欢迎留言~博主可nice啦,在线秒回ヾ(◍°∇°◍)ノ゙
Python递归实现①把嵌套列表压平为一层列表②返回嵌套列表中某元素出现的个数③返回第n个斐波那契数相关推荐
- Python一行代码求解斐波那契数
1. 斐波那契数 斐波那契数是一系列数字,其中每个数字是前两个数字的总和.斐波那契数列中的第一个和第二个数都是1,后面的数是前两个数的和. 如下所示: 1 1 2 3 5 8 13 21 34 55 ...
- Python 递归算 阶乘 法斐波那契数 不死兔问题
递归算法 阶乘 n!=nn-1n-2*-1 def fac(n):"""求某数的阶乘值:param n:某数:return:阶乘"""# 递 ...
- Java递归求斐波那契数求猴子吃桃
递归求斐波那契数 斐波那契数是指前两位是1,后面的数依次是其前两位的和.即1,1,2,3,5,8-给你一个 n,求其值是多少 public class recursionExercise01{//定义 ...
- 蓝桥杯python组--基础训练---求输入的第n个,斐波那契数
文章目录 题目 思路1: 结果 思路2: 结果 思路3 结果 思路4 结果 思路5 结果 思路6 结果 题目 求输入的第n个,斐波那契数 斐波那契数:斐波那契数列(Fibonacci sequence ...
- 斐波那契数与二分法的递归与非递归算法及其复杂度分析
1. 什么是斐波那契数? 这里我借用百度百科上的解释:斐波那契数,亦称之为斐波那契数列(意大利语: Successione di Fibonacci),又称黄金分割数列.费波那西数列.费波拿契数.费氏 ...
- 斐波那契数的两种求法(迭代,递归)
**斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列.该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和.也就是: F(0) = 0, F(1) = 1 F(N) = F( ...
- C和指针之函数之实现阶乘和斐波那契数(递归和非递归)
1.问题 实现阶乘和斐波那契数(递归和非递归) 2.代码实现 #include <stdio.h>int num = 0; //递归实现斐波那契数 // n <=2, f(n) = ...
- C语言用递归求斐波那契数,让你发现递归的缺陷和效率瓶颈
C语言用递归求斐波那契数,让你发现递归的缺陷和效率瓶颈 分享到: QQ空间 新浪微博 腾讯微博 豆瓣 人人网 递归是一种强有力的技巧,但和其他技巧一样,它也可能被误用. 一般需要递归解决的问题有两个特 ...
- 斐波那契数的两种实现方式———1.递归实现,2迭代实现
对于斐波那契数,若是采用递归的算法,每个递归调用都将触发另外两个递归调用,而这两个中调用任意一个还会触发另外两个的调用.递归调用的时间复杂度O(2^N),空间复杂度为O(N),所以在计算略大的数会花费 ...
最新文章
- [论文笔记] A model for correlated failures in N-version programming(IIE Trans, 2004)
- 深圳.Net俱乐部2.26活动资源下载之——从SmartClient到ClickOnce
- Fragment专辑(一):Fragment简介
- python 线程类 threading.Thread.run() 方法
- 第三章 使用Servlet处理HTTP响应
- PHP执行一个http请求
- html编辑器设置为publisher,将PDF转换为Publisher的简单方法
- open表和closed表_011 Ruby 多Word表写入Excel
- c语言生成随机的坐标,C语言文件的随机读写
- 宣战抖音!腾讯与头条之战的新局面与猜想
- iPhone清理喇叭灰尘_厉害了!原来可以这样一键清理 iPhone 喇叭灰尘!
- java爬虫 教程_Java爬虫其实也很简单,教你实用的入门级爬虫
- 理解 LSTM 网络
- 小熊派 LVGL 移植文件系统
- sync.Pool 使用
- Android 手机红外遥控器实现(转)
- 量子信息matlab,matlab在量子力学中的应用.PDF
- 输入某年某月某日,判断这一天是这一年的第几天?(JS实现)
- python下的考勤签到系统
- c语言调试时窗口一闪就没了,VS2012编译C语言代码运行出现黑框一闪就没了
热门文章
- String tirm()方法去不掉的空格
- 中信易卡,你值得搬砖吗?
- Greenplum6.x搭建_安装
- 服务器部署邮件功能_真正连续部署的功能标志
- Python selenium 爬取淘宝商品
- Android 的monkey测试及排错步骤
- xShell6远端登录Linux登录错误Connecting to 192.168.112.128:22... Could not connect to ‘192.168.112.128‘ (p
- 摩纳哥通过与华为合作 成为欧洲首个实现5G全覆盖国家
- [模型库]两款经典puma560机器人三维模型
- 儿童节html5小游戏,适合儿童节活动上玩的亲子互动小游戏