将C函数转换为Python函数

时间:2017-01-22 20:20:35

标签: python arrays function python-3.x

此函数搜索数组中元素的编号,如果存在,则返回数组中元素的编号;如果数组中不存在输入编号,则返回-1

int iSearch (int st[],int len,int no)
{
    int i;
    for (i=1;i<=len;i++) //len=lenth of the array , no = the number that we want to search in the array , st[] = the array
      if (st[i]==no)
          return i;
      return -1;
}

我想写这个函数的python版本,但因为我在python中使用列表而不是数组,我不知道如何在python中编写它。

我在python中编写了下面的代码,但它不起作用

def iSearch(list,lenth,no):
    x=0
    for x in range (lenth):
        if (list(x) == no)
            return i
        else
            return -1

2 个答案:

答案 0 :(得分:3)

这是等效的循环:

def iSearch(lst,no):
  for i,x in enumerate(lst):
    if x == no:
      return i
  return -1

然而,函数lst.index(no)正在做你需要的事情,但是以更有效的方式:

def iSearch(lst,no):
  if no in lst:
    return lst.index(no)
  return -1

或使用try / except(可能是最快的):

def iSearch(lst,no):
  try:
    return lst.index(no)
  except ValueError:
    return -1

答案 1 :(得分:1)

如果您包含下次出现的错误,这将有所帮助。

您的代码存在一些问题:1。“list”是已存在对象的名称2.您只检查第一个项目是否是所需对象,因为此时两个分支都返回。 3.访问列表元素需要方括号,而不是括号。

这似乎有效:

def linear_search_c(l,length,num):                                                                                                                    
  for x in range(0,length):                                                   
    if (l[x] == num):                                                       
        return x                                                            
  return -1

顺便说一句,如果对数组进行排序,则有比列出搜索方法更好的列表搜索方法:binary search