我必须编写一个函数,该函数返回给我们的列表中索引路径的值。
def recursive_index(lst,index_path):
if len (index_path)<1:
return recursive_index(list(index_path),index_path[1:])
else:
return index_path[0]
我应该从该函数得到的结果是给定的:
recursive_index([1,[2],3], [0])
,
我应该得到1。但是我得到的结果是0,而不是要求的1。
您的函数当前不lst
以任何方式与传递的内容进行交互。现在要做的是首先检查所传递的index_path
元素是否具有多个元素。您当前对的测试index_path
是[0]
,其中的元素不超过一个。然后,您的函数将else
分支和返回的第一个元素index_path
,这是0
。
要解决此问题,请lst
在适当的位置引用您的函数。
def recursive_index(lst,index_path):
if index_path:
return recursive_index(lst[index_path[0]],index_path[1:])
else:
return lst
如果还有要使用的索引,它将使用第一个可用的索引进行索引lst
,然后index_path
在递归调用中将其和其余的传递给函数。如果没有更多的索引,它将返回的剩余值lst
。
通过以下方式发起呼叫[1, [2], 3], [0]
:
[0]
不为空,因此将其的第一个元素用作索引。传递其余的索引。
[1, [2], 3][0]
是1
,我们通过了。其余的索引是[]
,我们通过了。
[]
是空的,因此return
传递的lst
是1
。
>>> recursive_index([1,[2],3], [0])
1
稍大的测试:
>>> recursive_index([1,[2, [1]], 3], [1])
[2, [1]]
>>> recursive_index([1,[2, [1]], 3], [1,0])
2
>>> recursive_index([1,[2, [1]], 3], [1,1])
[1]
>>> recursive_index([1,[2, [1]], 3], [1,1,0])
1
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句