Python嵌套列表转一维的方法(压平嵌套列表)

 更新时间:2018年07月03日 14:28:31   投稿:jingxian  
今天小编就为大家分享一篇Python嵌套列表转一维的方法(压平嵌套列表),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

前一段去云英面试,技术官很”不厚道“了问了一个非常简单的问题:如何将多维列表转化了一维的?当时虽然想到了使用迭代或者列表生成式可以做到,但是可以没能可行的代码,回来后一顿后悔。

对于规范的且嵌套维度较低的多维列表,python中有很多方法可以实现:

a=[[1,2],[3,4],[5,6]]
print [j for i in li for j in i]
#or
from itertools import chain
print list(chain(*a))
#or
import itertools
a = [[1,2,3],[4,5,6], [7], [8,9]]
out = list(itertools.chain.from_iterable(a))
#or
a=[[1,2],[3,4],[5,6]]
t=[]
[t.extend(i) for i in a]
print t
#or
a=[[1,2],[3,4],[5,6]]
print sum(a,[])
#or
reduce(lambda x, y: x+ y, a)

对于复杂的多维嵌套列表就需要使用一些复杂的方法:

#递归的方法比较容易理解
def expand_list(nested_list):
  for item in nested_list:
    if isinstance(item, (list, tuple)):
      for sub_item in expand_list(item):
        yield sub_item
    else:
      yield item
      
#在stackoverflow看到大牛的列表生成式版本
func = lambda x: [y for l in x for y in func(l)] if type(x) is list else [x]
#生成式的方法还有很多,可以自行摸索

对于使用python2.X的童鞋,还可以使用flatten函数来做:

>>> d=[1,2,3,[4,5],[6,7,[8,9]]]
>>>from compiler.ast import flatten
>>>flatten(a)
[1, 2, 3, 4, 5, 6,7,8,9]

其实上边列举的方法仅仅是冰山一角,大海下的冰山就等这童鞋们自行去寻找挖掘了。

以上这篇Python嵌套列表转一维的方法(压平嵌套列表)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 使用Python实现绘制发散条形图

    使用Python实现绘制发散条形图

    发散条形图用于简化多个组的比较,它许我们比较各组中的数值,还帮助我们快速地想象出有利的和不利的或积极的和消极的反应,下面我们就来看看如何使用Python绘制发散条形图吧
    2024-04-04
  • LeetCode189轮转数组python示例

    LeetCode189轮转数组python示例

    这篇文章主要为大家介绍了LeetCode189轮转数组python解法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • 详解Python 2.6 升级至 Python 2.7 的实践心得

    详解Python 2.6 升级至 Python 2.7 的实践心得

    本篇文章主要介绍了详解Python 2.6 升级至 Python 2.7 的实践心得,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Python cookbook(数据结构与算法)字典相关计算问题示例

    Python cookbook(数据结构与算法)字典相关计算问题示例

    这篇文章主要介绍了Python字典相关计算问题,结合实例形式总结分析了Python字典相关的最小值、最大值、排序等操作相关实现技巧,需要的朋友可以参考下
    2018-02-02
  • Python 数据库操作 SQLAlchemy的示例代码

    Python 数据库操作 SQLAlchemy的示例代码

    这篇文章主要介绍了Python 数据库操作 SQLAlchemy的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • Python全栈之递归函数

    Python全栈之递归函数

    这篇文章主要为大家介绍了Python递归函数,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • Python 元组拆包示例(Tuple Unpacking)

    Python 元组拆包示例(Tuple Unpacking)

    今天小编就为大家分享一篇Python 元组拆包实例(Tuple Unpacking),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python循环语句中else的用法总结

    Python循环语句中else的用法总结

    这篇文章给大家整理了关于Python中循环语句中else的用法,包括常规的 if else 用法、if else 快捷用法、与 for 关键字一起用、与 while 关键字一起用以及与 try except 一起用的用法总结,有需要的朋友们可以参考借鉴。
    2016-09-09
  • python执行精确的小数计算方法

    python执行精确的小数计算方法

    今天小编就为大家分享一篇python执行精确的小数计算方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • Python基础 while循环与break、continue关键字

    Python基础 while循环与break、continue关键字

    今天再带着大家讲述一下while循环。那么for循环和while循环,到底有什么区别呢?下面文章就来详细介绍,感兴趣的小伙伴可以参考一下
    2021-10-10

最新评论