2017-04-20 101 views
0

的問題是這樣的:Python的:把一系列的嵌套列表中的內容到一個列表

我有一系列的lists,總是包含兩個items。這些items中的每一個都可以是string或其他列表。目標是找出如何使lists中的所有這些items出現在單個resultant_list中,並返回resultant_list

到目前爲止我的代碼看起來像(其中巢被剝離名單):

def strip(nest): 
    result_list=[] 
    for item in nest: 
     if type(item) is str: 
      result_list.append(item) 
     else: 
      return result_list + strip(item) 

我要去哪裏錯了嗎?

+1

告訴我們*您的代碼如何不起作用。 – timgeb

+0

我現在看到,return語句總是處於函數 – Jam

回答

2

如果returnelse塊內,那麼for循環可能會過早終止,並且您不會遍歷每個元素。等到循環結束後再返回任何內容。

def strip(nest): 
    result_list=[] 
    for item in nest: 
     if type(item) is str: 
      result_list.append(item) 
     else: 
      result_list.extend(strip(item)) 
    return result_list 

而且,這可能不會引起你的具體情況下的錯誤,但是:這是一般最好使用isinstance測試一個對象的類型,而不是is。例如。 if isinstance(item, str):而不是if type(item) is str:

+3

的'結尾',或換句話說:OP代碼的問題在於,他在它看到的第一個非字符串元素上遞歸地調用'strip',但從不檢查以下要素。 – timgeb