我想在Python中的列表中搜索特定值(整数),其中List可能具有层次结构,因此在特定索引上可能存在列表(例如[1,2,[[3, 4],[5,6]]这里索引2是一个自己的列表,并且可以再次列出一个列表,等等,或者原始列表的索引本身可以有整数值(例如[1,2] ,3,[4,5]]在这种情况下,索引0是一个整数..
最终,我希望搜索值的索引与原始List相同,否则如果搜索的值不在列表中,它应该给我-1 ...我正在使用递归,但我没有期望的结果......
这是我的代码
def search_in_list(L,c1):
index=-1
for i in range(len(L)):
if type(L[i])==list:
search_in_list(L[i],c1)
elif type(L[i])!=list:
if c1==L[i]:
index=i
return index
这里有一个例子List [1,2,[[3,4],[5,6]]所以让我说我想搜索6,然后它应该给我2因为那是原始列表的索引6存在,但我有-1而不是......
有人可以挖掘我的代码并告诉我问题和解决方案...... 在此先感谢
答案 0 :(得分:4)
您可以进行一些修改以正常工作:
def search_in_list(l, needle):
for i, item in enumerate(l):
if type(item) == list:
# We found it, return current index
if search_in_list(item, needle) >= 0:
return i
else:
if needle == item:
return i
return -1
它不起作用的主要原因是递归调用。当它返回找到该项时(通过返回非负索引),您没有返回当前索引。