以下程序兼容各种数据类型查找, 如果仅仅为了查找字符串可能由更好的方式name_list = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'j'], ['da', 'y'], "b"]
def depth_find(a_list, obj, index=""):
"""
本函数取值是按照先广度查找, 后深度查找. 如果没有找到则返回None
:param a_list: 查找的列表
:param obj: 查找元素
:return: str, 用来表示索引位置. ".0.1.4"可以用a_list[0][1][4]取到obj值
"""
try:
i = a_list.index(obj)
return index + "." + str(i)
except ValueError:
for i, value in filter(lambda x: isinstance(x[1], list), enumerate(a_list)):
son_index = depth_find(value, obj, index + "." + str(i))
if son_index:
return son_index
print(depth_find(name_list, "z"))
|