跳到主要內容

將一個多層的list或是tuple解開並且攤平


有些時候我們會需要將一個有很多層的list解開,變成一維的list。其實三行程式碼就可以解決這個問題。只要你懂得如何使用reduce這個工具。


#!/usr/bin/env python

import collections

flatten = lambda p, c : p+reduce(flatten,c,[]) if isinstance(c, collections.Iterable) else p+[c,]

nested_list = [1, 2, 3, 4, 5, 6, [7, 8, [9, 10], [11, [12], 13]], 14, [15, 16, [17, [18, [19, 20], 21], 22, 23], 24, 25]]
print flatten([], nested_list)
輸出結果如下:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]

留言

這個網誌中的熱門文章

Portable Python

我常常需要把Python寫的script帶到其他電腦使用,因此,一個免安裝,可攜帶的Python就顯得十分重要。最近看過了幾個可攜式Python的方案,下面這個PortablePython是我覺得最合我意的方案。因為它提供了大部分會用到的Python module及工具,甚至連wxPython及PyGame也有。同時也有好用的Python編輯器PyScripter。所有開發Python所需的開發工具都一應俱全了!把它放到隨身碟中,就不用到處幫人安裝Python了。 PortablePython : http://www.portablepython.com/