亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

PYTHON壓平嵌套列表的簡單實現

系統 1699 0

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

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

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

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

例如:

            
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()]
          

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

其他方法:

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

            
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壓平嵌套列表的簡單實現就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: youjizz中国| 午夜精品在线免费观看 | 国产片91人成在线观看 | 欧美xo影院| 亚洲欧美日韩人成 | 日韩成人精品在线 | 毛片8| 亚洲高清视频在线播放 | 色婷婷国产 | 欧美一区二区在线 | 中文字幕欧美日韩在线不卡 | 2021国内精品久久久久影院 | 婷婷激情四月 | 久久不雅视频 | 久久久精品中文字幕 | 成人精品视频一区二区三区 | 国内偷自视频区视频综合 | 四虎影在线永久免费观看 | 亚洲h片| 国产成人精品影院狼色在线 | 亚洲综合色色图 | 日韩伦理一区 | 国产成人亚洲精品91专区手机 | 中文字幕亚洲区 | 国产一区二区三区在线视频 | 国产精品美女免费视频大全 | 国内久久久久影院精品 | jiz中国zz | 2021国内精品久久久久影院 | 国产精品午夜波多野结衣性色 | 狠狠色丁香婷综合久久 | 日韩毛片免费看 | 99精品久久久久中文字幕 | 日韩毛片在线影视 | 热久久精品 | 欧美午夜性刺激在线观看免费 | 亚洲视频成人 | 99精品在线播放 | 免费视频爱爱太爽在线观看 | 曰曰啪天天拍视频在线 | 亚洲国产精品自产拍在线播放 |