Python 类型为'的对象;类型';没有len()

Python 类型为'的对象;类型';没有len(),python,Python,类型为“type”的对象没有len() 这是我的代码: def search(li,n): l = 0 u = len(li)-1 while l <= u: mid = (l + u) //2 if li(mid) == n: return True else : if li(mid) < n : l = mid el

类型为“type”的对象没有len()

这是我的代码:

 def search(li,n):
    l = 0
    u = len(li)-1
    while l <= u:
       mid = (l + u) //2
       if li(mid) == n:

          return True
       else :
            if li(mid) < n :
              l = mid
            else:
              u = mid

应该读

if search(li,n):
list
是内置类型的名称

另外,索引到列表中的正确方法是使用方括号,而不是括号


最后,要使二进制搜索算法工作,需要对列表进行排序。

您必须使用方括号来获取列表中的一项:

def search(li,n):
    l = 0
    u = len(li)-1
    while l <= u:
       mid = (l + u) //2
       if li[mid] == n:

          return True
       else :
            if li[mid] < n :
              l = mid
            else:
              u = mid

li = [5,2,8,4,6,3,7,9]
n = 3

if search(li,n):
    print("Found")
else:
    print("Not Found")
def搜索(li,n):
l=0
u=len(li)-1

当l你试图对未排序的列表进行二进制搜索时?很明显,那是行不通的。至于实际检查列表中是否存在给定值,在实际生活中,在python中,只需使用:

if n in li: 
    print("Found") 
else: 
    print("Not Found")
如果搜索(列表,n):
应该是
如果搜索(li,n):
def search(li,n):
    l = 0
    u = len(li)-1
    while l <= u:
       mid = (l + u) //2
       if li[mid] == n:

          return True
       else :
            if li[mid] < n :
              l = mid
            else:
              u = mid

li = [5,2,8,4,6,3,7,9]
n = 3

if search(li,n):
    print("Found")
else:
    print("Not Found")
if n in li: 
    print("Found") 
else: 
    print("Not Found")