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

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條評論
主站蜘蛛池模板: 国产一级二级三级 | 欧美一区二区三区久久久人妖 | a4yy私人毛片 | 亚洲综合成人网在线观看 | 国产精品99在线观看 | 免费成人小视频 | 久久女人天堂 | 香蕉成人啪国产精品视频综合网 | 韩国一大片a毛片 | 一级片亚洲| 国产资源福利 | 九九久久99综合一区二区 | 四虎永久网站 | 欧美一级黄色片在线观看 | 色偷偷7777www | 日本不卡高清中文字幕免费 | 亚洲综合网在线观看首页 | 久久久久久久久久综合情日本 | 中文字幕在线看视频一区二区三区 | 俺来也俺来也天天夜夜视频 | 欧美日本黄色片 | 亚洲国产日韩欧美综合久久 | 青青草国产97免久久费观看 | 久久久综合中文字幕久久 | 欧美精品www | 国产欧美精品一区aⅴ影院 国产欧美精品一区二区 | 国产一二三区在线 | 免费看aa | 欧美白人猛性xxxxx交69 | 91手机在线视频 | 成年午夜性视频免费播放 | 国产精品综合视频 | 久久中文字幕久久久久91 | 日本老乱video | 国产真实偷人视频在线播放 | 欧美精品一区在线看 | 九九精品久久久久久久久 | 日韩一区二区三区免费 | 久久激情视频 | 久久高清精品 | 久久一本久综合久久爱 |