You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

二分查找报错TypeError:'builtin_function_or_method'对象不可下标访问 求助

搞定二分查找里的那个 TypeError 错误!

嘿,我一眼就看出问题出在哪了——你把列表的 index 方法当成可索引的对象来用啦!Python里 aList.index 是个内置方法,得用圆括号 () 调用,但更关键的是,在二分查找的逻辑里你根本不需要这个方法啊!

错误根源

你代码里的这行:

end = aList.index[middle]

用了方括号 [] 去访问 index,这就触发了 TypeError: 'builtin_function_or_method' object is not subscriptable——因为方法不是可索引的对象。而且在二分查找场景中,你应该是想获取列表中索引为 middle 的元素,直接写 aList[middle] 就够了,完全没必要用 index() 方法。

修复后的示例代码

假设你的二分查找是常规的目标值查找场景,修复后的代码大概是这样:

def binary_search(aList, target):
    start = 0
    end = len(aList) - 1  # 初始end设为列表最后一个元素的索引
    
    while start <= end:
        middle = (start + end) // 2
        # 直接通过索引取中间元素,不用index方法
        current_element = aList[middle]
        if current_element == target:
            return middle  # 返回找到的元素索引
        elif current_element < target:
            start = middle + 1  # 目标在右半部分,调整start
        else:
            end = middle - 1  # 目标在左半部分,调整end
    return -1  # 没找到目标值时返回-1

额外提醒

二分查找的核心就是靠索引快速定位元素,index() 方法是遍历列表找元素位置的,用它反而会丢掉二分查找的效率优势,所以以后写二分查找时,直接用索引访问元素就对啦!

内容的提问来源于stack exchange,提问作者anynsfcmschl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:08:29