2011-03-23 85 views
0

可能重複:
Flatten (an irregular) list of lists in Python的Python:遞歸壓扁列表

我有一個列表l = [2, 9, [1, 13], 8, 6],我需要遞歸壓扁得到l = [2, 9, 1, 13, 8, 6]。我找不到這樣做的方法。

PS - 在寫這篇文章時,我找不到任何與我的疑問相匹配的問題相關的問題'列表。所以,如果這是重複的,那麼請將我指向老問題而不是燃燒我。 :)

+0

上面的模式不僅有可能會回答你的問題,而且在問題本身中有很多問題的鏈接都有類似的答案,可能也會起作用。 – 2011-03-23 17:27:41

+0

那裏的解決方案使用了我剛剛開始學習Python時尚未遇到的方法。 – Dharmit 2011-03-23 17:31:18

+0

在瞭解我對Python的知識之前,此線程已關閉。我是一個Python新手,每當我從工作中學習Python。我會提高酒吧,但這需要時間。我無法理解關於欺騙的解決方案或從下面的答案。無論如何,我自己想出瞭解決方案。如果此線程打開,我將發佈我的解決方案,以便在關閉此線程之前,可以通過這裏的專家優化我的解決方案,這些專家不關心我對Python的瞭解。 – Dharmit 2011-03-24 05:00:01

回答

6

如果你想拉平任意嵌套iterables,你可以試試這個功能:

def flatten(x): 
    try: 
     it = iter(x) 
    except TypeError: 
     yield x 
    else: 
     for i in it: 
      for j in flatten(i): 
       yield j 

例子:

a = [2, 9, [1, 13], 8, 6] 
list(flatten(a)) 
# [2, 9, 1, 13, 8, 6] 

注意,功能也將拉平串到單個字符。