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

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條評論
主站蜘蛛池模板: 久草在线在线精品观看 | 一区二区三区免费视频观看 | 午夜在线影院 | 亚洲精品一二三四区 | 91视频免费入口 | 久久99精品国产麻豆不卡 | 717影院理论午夜伦八戒 | 国产亚洲男人的天堂在线观看 | 免费一级a毛片在线播放视 免费一级成人毛片 | 亚洲va精品中文字幕 | 97影院午夜在线观看琪琪 | 一级毛片免费视频观看 | 国产精品视频一 | 欧日韩不卡在线视频 | 99久久99久久精品免费看子伦 | 美女胸又大又黄www网站 | 东京干手机福利视频 | 九九精品视频一区在线 | 亚洲一区二区三区久久精品 | 性色网站 | 国产草草视频 | 国产高清视频在线播放 | 白云精品视频国产专区 | 亚洲精品国产综合一线久久 | 国产精品11页 | 热久久视久久精品18国产 | 看大片全色黄大色黄 | 狠狠色狠狠色综合婷婷tag | www.久久色| 久久精品国内一区二区三区 | 日韩 欧美 亚洲国产 | 亚洲四区| 国产精品视频第一区二区三区 | 在线播放国产区 | 一级做性色a爱片久久片 | 五月激情在线 | 国产农村精品一级毛片视频 | 日韩欧美亚洲一区 | 91成人啪国产啪永久地址 | 天天欲色成人综合网站 | 日韩一级欧美一级一级国产 |