2014-02-08 19 views
-1

的嵌套列表如果在给定的嵌套列表中找到给定的'to_find',那么如何编写一个返回true的递归函数。搜索int

例如:

>>> 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

您可以将最后一部分浓缩为:'平坦(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