發表文章

目前顯示的是 8月, 2014的文章

[Python] list flatten

最近剛好碰到需要做 list flatten 的行為 網路上查了一下, 順便做了一點不專業的比較 故事是這樣的 今天我有一個 list 中的 list tmp_list = [[1, 2, 3, 4], [5, 6, 7, 8]] 我今天想要做的事情就是把他平扁化, 也就是變成 [1, 2, 3, 4, 5, 6, 7, 8] 查到有兩種作法 1. 利用 itertools import itertools list(itertools.chain.from_iterable(tmp_list)) # [1, 2, 3, 4, 5, 6, 7, 8] 正當我覺的還要多 import module 不太滿意的時候, 看到了第二種作法 2. 利用 sum sum(tmp_list, []) # [1, 2, 3, 4, 5, 6, 7, 8] 頓時讓我覺的好聰明阿, 不過一般人來講應該會寫的第三種 3. 利用 list comprehensive [item for sub_list in tmp_list for item in sub_list] # [1, 2, 3, 4, 5, 6, 7, 8] 那順便做一個大的 list 來試試看哪個比較威XD import itertools def make_list(): return [range(100) for i in range(1000)] @profile def merge_iter(tmp_list): return list(itertools.chain.from_iterable(tmp_list)) @profile def merge_sum(tmp_list): return sum(tmp_list, []) @profile def merge_comph(tmp_list): return [item for sub_list in tmp_list for item in sub_list] if __name__ == '__main__': tmp_list = make_list() merge_iter(tmp_list) m