博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 实现多层列表拆分成单层列表
阅读量:4966 次
发布时间:2019-06-12

本文共 1149 字,大约阅读时间需要 3 分钟。

有个多层列表:[1, 2, 3, 4, [5, 6, [7, 8]], ['a', 'b', [2, 4]]],拆分成单层列表

使用内置方法

结果和原列表顺序不同

def split(li):    pop_index_list = []  # 用来存储需要删除元素的索引    for ele in li:        if isinstance(ele, list):            pop_index_list.insert(0, li.index(ele))            li.extend(ele)    for i in pop_index_list:        li.pop(i)   li = [1, 2, 3, 4, [5, 6, [7, 8]], ['a', 'b', [2, 4]]]split(li)print(li)# 结果 [1, 2, 3, 4, 5, 6, 'a', 'b', 7, 8, 2, 4]

不改变原先列表的顺序

def split(li:list):    for parent_i, parent_ele in enumerate(li):        if isinstance(parent_ele, list):            li.remove(parent_ele)            for sub_i, sub_ele in enumerate(parent_ele):                li.insert(parent_i+sub_i, sub_ele)  li = [1, 2, 3, 4, [5, 6, [7, 8]], ['a', 'b', [2, 4]]]split(li)print(li)        # 结果:[1, 2, 3, 4, 5, 6, 7, 8, 'a', 'b', 2, 4]

递归方式

def split(li:list, new_list=[]):    for ele in li:        if isinstance(ele, list):            split(ele)        else:            new_list.append(ele)    return new_listli = [1, 2, 3, 4, [5, 6, [7, 8]], ['a', 'b', [2, 4]]]print(split(li))# 结果:[1, 2, 3, 4, 5, 6, 7, 8, 'a', 'b', 2, 4]

转载于:https://www.cnblogs.com/ywsun/p/11402426.html

你可能感兴趣的文章
《Java程序设计实验》 软件工程18-1,3 OO实验2
查看>>
【Herding HDU - 4709 】【数学(利用叉乘计算三角形面积)】
查看>>
【7-9 有重复的数据I (20 分)】【此题卡输入,需要自己写个输入挂】
查看>>
JRebel安装部署,激活
查看>>
OPENSSL使用方法
查看>>
下载GO的开源开发工具LITEIDE
查看>>
接口操作XML
查看>>
idhttp访问DATASNAP有密码验证的中间件
查看>>
libmidas.so.2
查看>>
开发WINDOWS服务程序
查看>>
httpencode编码
查看>>
cross socket和msgpack的数据序列和还原
查看>>
解决跨操作系统平台JSON中文乱码问题
查看>>
DELPHI搭建centos开发环境
查看>>
IdHTTPServer允许跨域访问
查看>>
DELPHI开发LINUX包
查看>>
更新.net core 3.0,dotnet ef命令无法使用的解决办法
查看>>
React躬行记(13)——React Router
查看>>
前端利器躬行记(1)——npm
查看>>
前端利器躬行记(2)——Babel
查看>>