此函数搜索数组中元素的编号,如果存在,则返回数组中元素的编号;如果数组中不存在输入编号,则返回-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
答案 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