2016-12-13 42 views
1

「A = [1,2,[12,5,(6,7,9)],[34,56]] 拉姆達升:對於子列表項在升在子列表]項轉換包含子列表和元組列表成扁平列表

AB =拉姆達一個:[項目爲子列表以用於在子列表]項

打印(AB的(a))」

我想是這樣輸出[1 ,2,12,5,6,7,9,34,56]

回答

0

享受:

def convert(lst): 
    if all(not isinstance(e, (list, tuple)) for e in lst): 
     return lst[:] 
    else: 
     result = [] 
     for e in lst: 
      if isinstance(e, (list, tuple)): 
       converted = convert(e) 
       result.extend(converted) 
      else: 
       result.append(e) 
     return result 
+0

謝謝您的回答。但我張貼一些另一個版本來解決......請給你的意見..... – python19

+0

你在哪裏後呢? – Fomalhaut

+0

就在你的答案下面......我發佈了另一個答案...... – python19

0

我把這當作job.First轉換通列表到字符串表示的文本處理,然後分割字符串成小部分,每個部分包含一個元素,最後我用一個空列表接受這些新鮮elements.Here是我的代碼snippt:

def simpleL(complexL): 
    a =repr(complexL).split(',') 
    c=[] 
    for i in a: 
     element =i.strip('[()] ') 
     if element.isdigit(): 
      c.append(int(element)) 
    return c 
0
output = [] 
def uni_lst(lst): 
    if type(lst) in [list, tuple]: 
     for x in lst: 
      if type(x) in [list, tuple]: 
       uni_lst(x) 
      else: 
       output.append(x) 
    return output 

上面的代碼將使得從任何類型的列表或元組的一個列表。

+0

據我所知,它的工作原理,但我發現有一些缺點。首先,最好使用'isinstance'內建函數來檢查實例:'isinstance(lst,(list,tuple))'而不是[list,tuple]中的type(x)'(詳細信息參見PEP8 :https://www.python.org/dev/peps/pep-0008/)。另一個缺點是使用全局對象'輸出',一個好的函數必須執行所有的操作。 – Fomalhaut