欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PYTHON壓平嵌套列表的簡單實現(xiàn)

 更新時間:2016年06月08日 15:12:07   投稿:jingxian  
下面小編就為大家?guī)硪黄狿YTHON壓平嵌套列表的簡單實現(xiàn)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

list 是 Python 中使用最頻繁的數(shù)據(jù)類型, 標準庫里面有豐富的函數(shù)可以使用。

不過,如果把多維列表轉(zhuǎn)換成一維列表(不知道這種需求多不多),還真不容易找到好用的函數(shù),

要知道Ruby、Mathematica、Groovy中可是有flatten的啊。

如果列表是維度少的、規(guī)則的,還算好辦

例如:

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]]],上面的方法就不好使了,得換個方法了,
從結(jié)構(gòu)上看像是樹狀的,很容易聯(lián)想到了目錄的遍歷,于是就有了下面的做法:

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

另一種思路,嵌套列表無非就是有很多成對的方括號,一維的列表只有一對,把中間的去掉就行了,轉(zhuǎn)換為字符串就好辦了

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

不過,這種做法對于列表中出現(xiàn)包含"["或"]"的字符串時就無能為力了,需要改進.

其他方法:

國外某論壇上見到的,同樣是遞歸,一行搞定

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

下面這個方法用到Tkinter模塊,在郵件列表看到的方法。估計很多同學還不知道它能辦到吧,也算是python自帶。注意,windows版的python都自帶Tkinter模塊的,linux默認則沒有

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等

對于嵌套的元組,無需多說了吧,只需稍加改動就可以了

以上這篇PYTHON壓平嵌套列表的簡單實現(xiàn)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Python實現(xiàn)的維尼吉亞密碼算法示例

    Python實現(xiàn)的維尼吉亞密碼算法示例

    這篇文章主要介紹了Python實現(xiàn)的維尼吉亞密碼算法,結(jié)合實例形式分析了基于Python實現(xiàn)維尼吉亞密碼算法的定義與使用相關操作技巧,需要的朋友可以參考下
    2018-04-04
  • python3 pandas 讀取MySQL數(shù)據(jù)和插入的實例

    python3 pandas 讀取MySQL數(shù)據(jù)和插入的實例

    下面小編就為大家分享一篇python3 pandas 讀取MySQL數(shù)據(jù)和插入的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • python里反向傳播算法詳解

    python里反向傳播算法詳解

    在本篇文章了小編給大家整理的是一篇關于python里反向傳播算法詳解內(nèi)容,有興趣的朋友們可以學習下。
    2020-11-11
  • python爬取Ajax動態(tài)加載網(wǎng)頁過程解析

    python爬取Ajax動態(tài)加載網(wǎng)頁過程解析

    這篇文章主要介紹了python爬取Ajax動態(tài)加載網(wǎng)頁過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • Python日期與時間模塊(datetime+time+Calendar+dateuil?)相關使用講解

    Python日期與時間模塊(datetime+time+Calendar+dateuil?)相關使用講解

    這篇文章主要介紹了Python日期與時間模塊(datetime+time+Calendar+dateuil?)相關使用講解,文章圍繞主題展開詳細的內(nèi)容戒殺,具有一定的參考價值,需要的朋友可以參考一下
    2022-09-09
  • 在Python中通過threshold創(chuàng)建mask方式

    在Python中通過threshold創(chuàng)建mask方式

    今天小編就為大家分享一篇在Python中通過threshold創(chuàng)建mask方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • python數(shù)據(jù)類型中的字符串你了解多少

    python數(shù)據(jù)類型中的字符串你了解多少

    這篇文章主要為大家詳細介紹了python數(shù)據(jù)類型中的字符串,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Python?中設置請求的最大重試次數(shù)示例代碼

    Python?中設置請求的最大重試次數(shù)示例代碼

    本篇文章介紹了為什么我們會收到錯誤消息,指出超出了最大重試次數(shù),以及我們?nèi)绾卧?Python?中為請求設置?max_retries,本文通過示例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2023-06-06
  • Python爬蟲入門案例之爬取二手房源數(shù)據(jù)

    Python爬蟲入門案例之爬取二手房源數(shù)據(jù)

    讀萬卷書不如行萬里路,學的扎不扎實要通過實戰(zhàn)才能看出來,今天小編給大家?guī)硪环輕ython爬取二手房源信息的案例,可以用來直觀的了解房價行情,大家可以在過程中查缺補漏,看看自己掌握程度怎么樣
    2021-10-10
  • Matplotlib繪圖基礎之幾何圖形的繪制詳解

    Matplotlib繪圖基礎之幾何圖形的繪制詳解

    除了繪制各類分析圖形(比如柱狀圖,折線圖,餅圖等等)以外,matplotlib?也可以在畫布上任意繪制各類幾何圖形,下面小編就來和大家講講如何繪制常見的幾種幾何圖形吧
    2023-08-08

最新評論