2017-04-20 1 views
0

問題は、次のとおりです。Pythonの:1つのリストに、ネストされた一連のリストの内容を置く

私は常に2つのitemsを含む、listsのシリーズを持っています。これらの各itemsstringまたは別のリストのいずれかです。目指すのは、これらのすべてをからlistsにする方法を考えてみて、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

私たちに教える* how *あなたのコードは動作しません。 – timgeb

+0

私が今見ているreturn文は、常に関数 – Jam

答えて

2

elseブロック内にreturnブロックがあると、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 

はまた、これはおそらく、あなたの特定のケースのバグを引き起こすのではなく、:それはisするのではなく、オブジェクトの種類をテストするためにisinstanceを使用するのが一般的に好ましいです。例えば。 if isinstance(item, str):の代わりにif type(item) is str:

+3

の '終わり'にあります。つまり、OPのコードの問題は、文字列以外の最初の要素に対して再帰的に 'strip'を呼び出すことです。以下の要素。 – timgeb

関連する問題