日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python嵌套列表轉一維的方法(壓平嵌套列表)

系統 1798 0

前一段去云英面試,技術官很”不厚道“了問了一個非常簡單的問題:如何將多維列表轉化了一維的?當時雖然想到了使用迭代或者列表生成式可以做到,但是可以沒能可行的代碼,回來后一頓后悔。

對于規范的且嵌套維度較低的多維列表,python中有很多方法可以實現:

            
a=[[1,2],[3,4],[5,6]]
print [j for i in li for j in i]
#or
from itertools import chain
print list(chain(*a))
#or
import itertools
a = [[1,2,3],[4,5,6], [7], [8,9]]
out = list(itertools.chain.from_iterable(a))
#or
a=[[1,2],[3,4],[5,6]]
t=[]
[t.extend(i) for i in a]
print t
#or
a=[[1,2],[3,4],[5,6]]
print sum(a,[])
#or
reduce(lambda x, y: x+ y, a)
          

對于復雜的多維嵌套列表就需要使用一些復雜的方法:

            
#遞歸的方法比較容易理解
def expand_list(nested_list):
  for item in nested_list:
    if isinstance(item, (list, tuple)):
      for sub_item in expand_list(item):
        yield sub_item
    else:
      yield item
      
#在stackoverflow看到大牛的列表生成式版本
func = lambda x: [y for l in x for y in func(l)] if type(x) is list else [x]
#生成式的方法還有很多,可以自行摸索
          

對于使用python2.X的童鞋,還可以使用flatten函數來做:

            
>>> d=[1,2,3,[4,5],[6,7,[8,9]]]
>>>from compiler.ast import flatten
>>>flatten(a)
[1, 2, 3, 4, 5, 6,7,8,9]
          

其實上邊列舉的方法僅僅是冰山一角,大海下的冰山就等這童鞋們自行去尋找挖掘了。

以上這篇Python嵌套列表轉一維的方法(壓平嵌套列表)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 新民市| 来安县| 林甸县| 永善县| 新晃| 松潘县| 阿克苏市| 定日县| 万载县| 江都市| 麦盖提县| 临清市| 涡阳县| 河西区| 永城市| 新源县| 昌乐县| 舟曲县| 获嘉县| 会东县| 无锡市| 石棉县| 尚义县| 汶上县| 小金县| 陕西省| 丹东市| 新绛县| 阜城县| 甘南县| 新津县| 易门县| 江门市| 茌平县| 屏边| 安新县| 南川市| 淅川县| 磴口县| 平远县| 洛宁县|