在嵌套列表中查找元素,但是我们不知道该列表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在嵌套列表中查找元素,但是我们不知道该列表相关的知识,希望对你有一定的参考价值。
正如我在标题中提到的,我们如何在嵌套列表中找到元素,但用户创建列表。例如:
[’t’,[’q’,[’d’,1],[’p’,7],[’e’,[’i’,1],[’r’,5]]],[’i’,[’o’,5],[’y’,3],[’f’,8]]]
我想找到3
的索引。
答案
如果我正确理解了您的问题,那么解决此问题的一种方法是使用回溯。您可以递归地搜索嵌套列表中的元素,同时保持对索引的跟踪。找到元素后,您将从函数中返回。这是该方法的代码
_list1 = [
't',
[
'q',
['d',1],
['p',7],
[
'e',
['i',1],
['r',5]
]
],
[
'i',
['o',5],
['y',3],
['f',8]
]
]
_list2 = [
1,
2,
't',
['y',3]
]
def find_ind_rec(current_list, indexes, search_key):
for index,element in enumerate(current_list): # Iterate through the list
if element == search_key: # If element equals to the search_key, return True
indexes.append(index) # Add current index
return True
elif isinstance(element,list): # If element is another list (nested list), recursively search for search_key
indexes.append(index) # Add current index
if find_ind_rec(element,indexes,search_key): # If search_key found in this nested list, return true
return True
# Otherwise, backtrack!
indexes.pop()
return False # If search_key not found, return False
indexes = [] # Initially empty
find_ind_rec(_list1,indexes,['y',3]) # Search ['y',3] in example _list1
print(indexes)
indexes = [] # Initially empty
find_ind_rec(_list1,indexes,['i',1]) # Search ['i',1] in example _list1
print(indexes)
indexes = [] # Initially empty
find_ind_rec(_list2,indexes,3) # Search 3 in example _list2
print(indexes)
indexes = [] # Initially empty
find_ind_rec(_list2,indexes,5) # Search 5 in example _list2 --> Not found
print(indexes)
输出
[2, 2]
[1, 3, 1]
[3, 1]
[]
以上是关于在嵌套列表中查找元素,但是我们不知道该列表的主要内容,如果未能解决你的问题,请参考以下文章