美文网首页Python与数据分析
【Python学习笔记】压平嵌套列表

【Python学习笔记】压平嵌套列表

作者: 清梦载星河 | 来源:发表于2020-01-19 20:37 被阅读0次

一. 先来一个简单的实现

li=[[1,2],[3,4],[5,6]]
print [j for i in li for j in i]
#or
from itertools import chain
print list(chain(*li))
#or
a=[[1,2],[3,4],[5,6]]
t=[]
[t.extend(i) for i in a]
print t
#or
print sum(li,[])

但这只能对简单的二维列表进行压平,对于复杂一些的,如:li=[1,[2],[[3]],[[4,[5],6]]],上面的方法就不好使了,得换个方法了,从结构上看像是树状的,很容易联想到了目录的遍历,于是就有了下面的做法:

思路二:目录遍历

def flat(tree):
    res = []
    for i in tree:
        if isinstance(i, list):
            res.extend(flat(i))
        else:
            res.append(i)
    return res

思路三:转变为字符串,去掉中间的括号

另一种思路,嵌套列表无非就是有很多成对的方括号,一维的列表只有一对,把中间的去掉就行了,转换为字符串就好办了。

def flatten(seq):
    s=str(seq).replace('[', '').replace(']', '') #当然也可以用正则
    return [eval(x) for x in s.split(',') if x.strip()]

不过,这种做法对于列表中出现包含"["或"]"的字符串时就无能为力了,需要改进.

思路四:Lambda一行代码

flat=lambda L: sum(map(flat,L),[]) if isinstance(L,list) else [L]

思路五:TKinter模块

from Tkinter import _flatten

li=reduce(lambda *x:list(x),range(2,6),[1])
print li
print _flatten(li)
#Out:
#[[[[[1], 2], 3], 4], 5]
#(1, 2, 3, 4, 5)
#对元组同样适用

其他

还有一些第三方模块提供这样的功能,如sympy、numpy、pipe等对于嵌套的元组,无需多说了吧,只需稍加改动就可以了。比如numpy.ndarray有flatten。Sympy中也有flatten()函数。

相关文章

  • 【Python学习笔记】压平嵌套列表

    一. 先来一个简单的实现 但这只能对简单的二维列表进行压平,对于复杂一些的,如:li=[1,[2],[[3]],[...

  • 【慕课网】Python入门笔记 「4」基本数据类型

    【慕课网】Python入门笔记 「4」“组”的概念与定义 [TOC] 1.列表的定义(数组) 列表: 嵌套列表(其...

  • python3笔记(002)----函数嵌套、filter()函

    python笔记002----函数嵌套、filter()函数、一行输入多个整数(空格分隔)、多维列表的输入 字符串...

  • python--深浅拷贝

    python学习中,有这样一个问题,列表的拷贝。当列表有嵌套列表时候,那么在进行复制拷贝的时候就会产生内列表的元素...

  • markdown 快速上手,只需10分钟

    markdown学习笔记 分割线 引用 这就是一个引用还可以嵌套哦! 列表 说明:markdown 支持有序列表...

  • 8、Python列表

    上集回顾: Python函数 while循环嵌套 Python列表(list)是一种有序的集合,是 Python ...

  • Effective Python 学习笔记 2

    Effective Python 学习笔记 2 用列表推导来取代map和filter 列表推导(list comm...

  • markdown test

    一级标题 二级标题 三级标题 嵌套列表嵌套列表嵌套列表嵌套列表嵌套列表嵌套列表 无序列表 无序列表 有序列表1 有...

  • Python基础-08数据嵌套

    8.数据嵌套     在Python中,各种数据是可以相互嵌套的,如列表中嵌套元组、整型、字典等,字典中也可以嵌套...

  • python--嵌套序列

    python 嵌套序列 嵌套序列:是由一组等长列表组成的列表。 numpy可以对数据进行类型转换, 统计转成字符型,,

网友评论

    本文标题:【Python学习笔记】压平嵌套列表

    本文链接:https://www.haomeiwen.com/subject/wihdzctx.html