问题描述
我需要本次作业的帮助。
我需要用Python编写一个名为ind(e,L)
的函数;在L中第一个显示e的位置。我无法使用索引函数。
例如,
In [1]: ind(42,[55,77,42,12,100])
Out[1]: 2
或
In [1]: ind('hi',['oh','hi','there'])
Out[1]: 1
编辑:抱歉,我对Stackoverflow.com也很陌生,所以很抱歉没有提供到目前为止我已经提供的代码。
这是我的代码,到目前为止:
def ind(e,L):
if L == '' or L == []:
return 0
else:
return ind(L[0:]) + 1
assert ind(42,[20,60,30]) == 2
我的代码似乎不起作用。
我对递归还很陌生,我认为仍然很难管理。 有人可以帮我提供此代码,并以纯英语解释该代码如何工作吗?
您的帮助将不胜感激!非常感谢。
解决方法
def ind(e,L):
for i,v in enumerate(L):
# Iterates over [(0,55),(1,77),(2,42)]
if v == e:
# If our current element matches the search,return the index
return i
# If none was found,return -1
return -1
无需递归
,您可以使用list comprehensions。
def ind(e,L):
return [k for k,i in enumerate(L) if i == e]