网站建设的总体目标考核指标,永明投资建设有限公司网站,中文域名注册管理中心,建设企业网站官网u盾登录大家好#xff0c;今天给大家讲解一个Python的进阶知识点#xff1a;如何将一个嵌套的大列表展开形成一个列表。
小编提供了7种方法供大家学习参考#xff1a; for循环 列表推导式 使用第三方库itertools 使用sum函数 python自加#xff08;#xff09; 使用extend函…大家好今天给大家讲解一个Python的进阶知识点如何将一个嵌套的大列表展开形成一个列表。
小编提供了7种方法供大家学习参考 for循环 列表推导式 使用第三方库itertools 使用sum函数 python自加 使用extend函数 使用递归函数
技术交流
技术要学会分享、交流不建议闭门造车。一个人走的很快、一堆人可以走的更远。
本文来自技术群粉丝分享整理文章源码、数据、技术交流均可加交流群获取群友已超过2000人添加时最好的备注方式为来源兴趣方向方便找到志同道合的朋友。 方式①、添加微信号pythoner666备注来自CSDN 备注来意 方式②、微信搜索公众号Python学习与数据挖掘后台回复加群 模拟数据
data [[1,2,3],[4],[5,6,7],[8,9],[10]] # 模拟数据 data [[1, 2, 3], [4], [5, 6, 7], [8, 9], [10]] 这份模拟的数据有2个特点 嵌套列表只有两层 里面的元素也全部是列表类型
方式1for循环
最容易想到的方式就是for循环
for i in data: print(type(i)) class list
class list
class list
class list
class list # 导入Iterable 模块
from collections import Iterable sum_data [] for i in data: if isinstance(i,Iterable): # 如果可迭代比如列表形式 for j in i: # 再次循环追加元素 sum_data.append(j) else: sum_data.append(i) # 否则直接追加 sum_data [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 方式2列表推导式
for循环能够实现那么列表推导式肯定也可以
sum_data [i for j in data if isinstance(j,Iterable) for i in j] # 循环一定是从大到小 sum_data [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 方式3使用itertools库
借助第三方的库itertools
import itertools # 通过chain方法从可迭代对象中生成最后展开成列表 sum_data list(itertools.chain.from_iterable(data))
sum_data [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 方式4使用sum函数
sum_data sum(data, [])
sum_data [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 方式5Python自加
sum_data [] for i in data: sum_data i # 实现自加 sum_data [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 方式6extend函数
如何快速理解python的extend函数给个案例
# 如何理解python的extend函数 list1 [1,2,3,4]
list1.extend([5,6]) # 追加功能extend就地修改 list1 # list1已经发生了变化 [1, 2, 3, 4, 5, 6] sum_data [] for i in data: sum_data.extend(i) # 对空列表逐步追加 sum_data [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 方式7使用递归函数
data [[1, 2, 3], [4], [5, 6, 7], [8, 9], [10]] def flatten(data): # 定义递归函数 sum_data [] for i in data: if isinstance(i, Iterable): # 如果i是可迭代的对象列表等调用函数本身直到执行else语句 sum_data.extend(flatten(i)) else: sum_data.append(i) return sum_data sum_data flatten(data) # 调用递归函数
sum_data [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 后续
本文的数据有特殊点嵌套只有两层且里面的元素全部是列表后面会考虑非全部列表的数据比如列表和数字组合的嵌套列表等和多层嵌套。
如果有更好的方法留言区欢迎讨论交流~