2014-02-08 5 views
-1

주어진 'to_find'가 제공된 중첩 목록에서 발견되면 true를 반환하는 재귀 함수를 어떻게 작성할 수 있습니까?중첩 된 목록 검색

예 :

>>> searchNested([1,[4, 5, 6, [2, 10], 9], [1, 4, 5]], 2) 
True 
+5

이미 뭔가를 시도 사용할 수 있습니까? – NPE

답변

0

먼저 평평하게 한 후 in

def searchNested(lst,needle): 
    def flatten(target): 
     return_list = list() 
     for element in target: 
      if isinstance(element,list): 
       return_list.extend(flatten(element)) 
      else: 
       return_list.append(element) 
     return return_list 

    lst = flatten(lst) 
    if needle in lst: return True 
    else: return False 
+0

마지막 부분을 요약하면됩니다.'return needle in flatten (lst)'. – iCodez

3
def searchNested(xs, y): 
    if y == xs: 
     return True 
    return isinstance(xs, list) and any(searchNested(x, y) for x in xs) 

>>> searchNested([1,[4, 5, 6, [2, 10], 9], [1, 4, 5]], 2) 
True 
>>> searchNested([1,[4, 5, 6, [8, 10], 9], [1, 4, 5]], 2) 
False