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

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條評論
主站蜘蛛池模板: 精品免费视在线观看 | 玖玖玖精品视频免费播放 | 天海翼一区二区三区高清视频 | 亚洲成人精品视频 | 国产成人精品一区二区视频 | 毛片2016免费视频 | 综合7799亚洲伊人爱爱网 | 欧美综合亚洲图片综合区 | 九九99热久久国产 | 久亚洲精品不子伦一区 | 青青国产成人精品视频 | 亚洲综色 | 在线久综合色手机在线播放 | 亚洲性夜夜时 | 欧美777| 亚洲激情小视频 | 日日噜噜噜夜夜爽爽狠狠图片 | 老司机午夜在线视频免费观 | 久久久免费观看 | 日韩免费在线视频观看 | 福利一区在线观看 | 久久精品天天中文字幕人 | 色综合色综合色综合色综合 | 免费看成人播放毛片 | 国产中文字幕在线 | 伊人久久99亚洲精品久久频 | 日本一级毛片片免费观看 | 九九热免费观看 | 久久婷婷人人澡人人爱91 | 国产视频一区在线播放 | 老子不卡 | 亚洲sss视频| 国产91在线chines看 | 亚洲一区欧美 | 九九热九九热 | 亚洲成年网 | 日韩新片王| 最新福利在线 | 久久久久久亚洲精品中文字幕 | 国产精品亚洲片在线牛牛影视 | 亚洲久热|