Python使用递归对任意嵌套列表进行扁平化
首先补充一个地方,之前有个文章演示的是猜数游戏,原文链接为猜数游戏用Python应该这样写,代码中漏掉了一个break语句,也就是说,在猜对的时候输出语句print('Congratulations!')后面应增加一个break,否则会让玩家继续猜,这是不合理的。
下面的今天的内容。
有时候可能会需要这样的功能:把任意深度的嵌套列表扁平化,例如把[1, 2, [3, [4]]]和[1, [2, [3, [4]]]]都变成[1, 2, 3, 4]的形式,由于提前无法确定列表的嵌套深度,这种情况比较适合使用递归来实现。演示代码如下:
def flatList(lst):
result = [] #存放最终结果
def nested(lst):#函数嵌套定义
for item in lst:
if isinstance(item, list):
nested(item)#递归子列表
else:
result.append(item)#扁平化列表
nested(lst) #调用嵌套定义的函数
return result #返回结果
#测试
lst = [1, 2, 3, 4]
print(flatList(lst))
lst = [1, [2, 3], 4]
print(flatList(lst))
lst = [1, [2, [3, 4]]]
print(flatList(lst))
lst = [1, [2, [3, [4]]]]
print(flatList(lst))
以上几种形式的列表都将被扁平化为[1, 2, 3, 4]
温馨提示:单击文章顶部作者名字旁边浅蓝色的“Python小屋”进入公众号,关注后可以查看更多内容!
欢迎转发给您的朋友,或许这正是Ta需要的知识!
Python使用递归对任意嵌套列表进行扁平化相关推荐
- Python递归实现①把嵌套列表压平为一层列表②返回嵌套列表中某元素出现的个数③返回第n个斐波那契数
一.把嵌套列表压平为一层列表 def flatten(nested_list):'''这是把嵌套列表压平为简单列表并返回的函数:参数 nested_list:一个嵌套列表'''#先定义一个空列表,用于 ...
- Python花式编程:多层嵌套列表扁平化
封面图片:<Python程序设计基础(第2版)>,ISBN:9787302490562,董付国,清华大学出版社 图书详情: 好消息:智慧树网APP"知到"中搜索&quo ...
- php n维数组扁平化,js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解...
数组的扁平化:将多维数组变成一维数组 对于一个像这样的嵌套数组:a=[1,[2,[3,4]],5,6]我们想要把它变成一个一维数组,有下面几种方法: 方法一:递归一 function parseArr ...
- python如何制作一个任意列表_在Python中扁平化任意嵌套列表的最快方法是什么?...
慕用2447696 此函数应该能够快速平整嵌套的可迭代容器,而无需使用任何递归:import collectionsdef flatten(iterable): iterator = iter( ...
- 任意长度的python列表_在Python中压扁任意嵌套列表的最快方法是什么?
这个函数应该能够在不使用任何recursion的情况下快速地压扁嵌套的可迭代容器: import collections def flatten(iterable): iterator = iter( ...
- 扁平化嵌套列表迭代器 [树的递归前序遍历 + 迭代前序遍历]
递归|迭代的前序遍历 前言 一.扁平化嵌套列表迭代器 二.前序遍历(无需访问非叶节点) 1.递归实现 2.栈模拟 3.惰性栈模拟(next时再入栈) 总结 参考文献 前言 问题转换:将需求确认,结合已 ...
- python列表切片后得到剩余列表_python列表切片和嵌套列表取值操作详解
python列表切片和嵌套列表取值操作详解 给出列表切片的格式: [开头元素::步长] # 输出直到最后一个元素,(最后一个冒号和步长可以省略,下同) [开头元素:结尾元素(不含):步长] # 其中, ...
- Python各种推导式(列表推导式,字典推导式,集合推导式,嵌套列表推导式)
一.列表推导式 Python官网列表推导式部分 列表推导式提供了一种创建list的简便方法.应用程序创建列表时,列表中的元素来源于其他序列.可迭代对象或创建的一个满足一定条件的序列. 基本格式: [ ...
- python嵌套列表操作方法_python中多层嵌套列表的拆分方法
场景:有一个多层嵌套的列表如:[[23],[3,3],[22,22],1,123,[[123,a],2]] 拆分成: def splitlist(list): ''' 现有一个列表,里面元素包括 数字 ...
最新文章
- 客快物流大数据项目(五十二):根据数据库表及字段创建公共模块
- express中的bin/www文件详解
- HashSet、TreeSet和LinkedHashSet
- java bufferedimage颜色_java – BufferedImage意外地改变了颜色
- 变异函数 python_使用Python进行变异测试
- 浅谈Borg/YARN/Mesos/Torca/Corona一类系统
- CentOS服务器Mysql主从复制集群的搭建
- Mindomo Desktop for mac(思维导图软件)中文版
- 【HDU - 3038】How Many Answers Are Wrong 【带权并查集 - 向量偏移】
- RS232(串口线)转RJ45(网线)
- 软件工程:数据流图和结构图怎么画?
- IT项目管理 第三章
- HTML css把图片变圆,HTML+CSS:圆形和圆角图片格式
- 计算机数字键盘无法输入数字,键盘无法输入,键盘数字键打不出来
- 济宁市计算机技能大赛,【嘉职动态】2019年济宁市职业院校技能大赛嘉祥职业中专赛区圆满完成任务...
- python防止源码泄露_ctf常见源码泄露 - Lmg66 - 博客园
- 热修复——Tinker的集成与使用
- E22 LoRa模块透传 定点传输 WOR模式测试与MicroPython应用
- 这5种计算机视觉技术,刷新你的世界观
- 手机App-手机端QQ群文件下载失败,使用WiFi可以下载但是流量就不行
热门文章
- python3 mysqldb查询_python3 pymysql查询结果包含字段名
- notepad 没有plugin manager_和平精英巅峰赛正式开启,热度却没有象中那么高!
- oracle 统计文本字符串,oracle人员权限,字符串转列,统计管理详解-Oracle
- 计算机视觉技术测试物体距离,应用计算机视觉技术检测物体的形变
- html表格接收json数据,Bootstrap-table如何显示后台传过来的JSON数据?
- asp.net oracle 分页,asp.net教程之利用ASP实现Oracle数据记录的分页显示
- Oracle 11g系统自动收集统计信息的一些知识
- Java Annotation(注解)使用教程
- 基于JAVA+SpringMVC+MYSQL的便利店运营管理系统
- 测试用例编写(功能测试框架)