索引列表递归

问题描述

我需要本次作业的帮助。

我需要用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]