我在python中有一个分层列表,在层次结构中,列表包含许多列表,但未定义子子列表的数量和长度。
[[5], [[1], [[2, 3], [4]]]]
我试图通过以下方式找到一个数字,但函数没有返回任何内容,是否有找到它的pythonic方法?
def is_present(lst,value):
for element in lst:
if isinstance(element, list):
return is_present(element,value)
else:
if value == element:
return True
答案 0 :(得分:3)
你遇到了一些问题:
False
(如果该元素不在列表中)。True
(并且忽略True
从递归返回),则只应返回False
。这样可以确保即使递归找不到元素,也会继续检查列表。以下是修复这些问题的功能:
def is_present(lst,value):
for element in lst:
if isinstance(element, list):
if is_present(element,value):
return True
else:
if value == element:
return True
return False
答案 1 :(得分:0)
In [14]: %paste
def isPresent(L, val):
if val in L:
return True
else:
return any(isPresent(i,val) for i in L if isinstance(i, list))
## -- End pasted text --
In [15]: L = [[5], [[1], [[2, 3], [4]]]]
In [16]: isPresent(L, 1
....: )
Out[16]: True
In [17]: isPresent(L, 2)
Out[17]: True
In [18]: isPresent(L, 3)
Out[18]: True
In [19]: isPresent(L, 4)
Out[19]: True
In [20]: isPresent(L, 5)
Out[20]: True
In [21]: isPresent(L, 6)
Out[21]: False