Python 线性搜索-使用列表匹配整数
您好,我是python新手,这是我尝试做的,我有下面的列表Python 线性搜索-使用列表匹配整数,python,linear-search,Python,Linear Search,您好,我是python新手,这是我尝试做的,我有下面的列表 x= [1,2,3,4,5,6,7,8,9] 下面是我的python代码: length = len(x) c = input("Enter a no\n") for i in range (length): if x[i] == c: print ("Found at position ", i) else: print("not found") 并且输出是接收的 Enter a
x= [1,2,3,4,5,6,7,8,9]
下面是我的python代码:
length = len(x)
c = input("Enter a no\n")
for i in range (length):
if x[i] == c:
print ("Found at position ", i)
else:
print("not found")
并且输出是接收的
Enter a no
2
not found
not found
not found
not found
not found
not found
not found
not found
not found
现在,在我几乎不知道的情况下,我发现这个“未找到的倍数”正在发生,因为每次循环都会对列表进行“否”检查,如果它不可用,则会由于缺少适当的bike
statement而移动到else部分,但当它进入x[i]时,我无法找出什么其匹配,然后输出应位于位置1。我在某个地方读到,如果x[i]中的c需要使用,但它不起作用。另一方面,我重新编写了代码
def ls():
t = int(input("Enter your search no \n"))
for i in x:
if i!= t:
continue
print("Your value is present in ")
break
else:
print ("parrrrrrrrrrr")
ls()
这一切都很好。如果我能了解以下情况,将会有所帮助:
- 对于第一个程序,为什么即使列表中存在输入,也找不到其显示
- 输入x[i]中c的部分根据我的了解(现在没有意义)发生了相同的问题,它也应该工作
- 如果是整数vs列表的情况,那么我的第二个代码是如何工作的
-这是做线性搜索的正确方法吗
因为input返回一个str
对象,然后与int
对象进行比较,而不进行隐式转换,所以表达式总是False
c在x中
其中x是一个列表,但是x[i]
在您的例子中是一个整数
第二个代码正在工作,因为您隐式地将输入转换为int
在我看来,最优雅的方式是:
c = input("Enter a no\n")
items = [1,2,3]
print(items.index(int(c)) if int(c) in items else 'Not found')
当然,若输入不能转换为整数,不要忘记捕捉ValueError
因为input返回一个str
对象,然后与int
对象进行比较,而不进行隐式转换,所以表达式总是False
c在x中
其中x是一个列表,但是x[i]
在您的例子中是一个整数
第二个代码正在工作,因为您隐式地将输入转换为int
在我看来,最优雅的方式是:
c = input("Enter a no\n")
items = [1,2,3]
print(items.index(int(c)) if int(c) in items else 'Not found')
当然,如果输入不能转换为整数,不要忘记捕获ValueError。问题是您试图将str()
与int()
进行比较。线性搜索有O(n),但是如果你的列表被排序,你可以使用O(logn)。wtf:我忘了输入需要一个字符串,非常感谢,是否有任何链接可以解释O(n)的细节。感谢@VadymStupakovjust在googlebig o notation
中键入,问题是您试图将str()
与int()
进行比较。线性搜索有O(n),但是如果你的列表被排序,你可以使用O(logn)。wtf:我忘了输入需要一个字符串,非常感谢,是否有任何链接可以解释O(n)的细节。感谢@VadymStupakovjust输入googlebig o notation
@SubhaSaha,我已经用更多的数据解释更新了我的答案,感谢你的详细回答并提到了价值点错误,我最近学习了错误处理的概念。def thankyou():@OlegRybalchenko:}@subhasha,不客气:)如果没有更多问题,请将其标记为答案)当然,没有问题:)@subhasha,我已经更新了我的答案,并提供了更多的数据解释,感谢您的详细回答和提到价值点错误,我最近学习了错误处理的概念。def thankyou():@OlegRybalchenko:}@subhasha,不客气:)如果没有问题,请将其标记为答案)当然,没有问题:)