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

Python运行报错TypeError: '<'不支持int与types.GenericAlias实例比较

TypeError: 'int'和'types.GenericAlias'实例不支持小于比较的排查修复

错误根因

报错直接来自searchInsert函数中递归调用的传参错误:

  • 调用inserter时第一个参数传入了Python内置类型list,而非实际需要处理的入参nums。Python 3.9+中内置泛型类型本身属于types.GenericAlias实例,不是存储数值的序列对象。
  • 递归函数执行到target < nums[mid]行时,此处的nums是内置list类型,取下标得到的是泛型相关对象,和int类型的target做比较时就会抛出该类型错误。

代码另外存在3处逻辑bug,会导致修复传参后结果依然不符合预期:

  • 递归调用inserter时未加return,递归得到的返回值无法向上传递,最终函数会返回None
  • 递归终止条件错误:当查找区间为空(first >= last)时直接返回0,无法返回正确的插入位置
  • 测试调用时传入的序列是元组,虽然不触发报错,但和搜索插入位置的常规入参类型(列表)不一致,容易引发混淆

修复后代码

def inserter(nums, first, last, target):
    if first > last:
        return first
    mid = (first + last) // 2
    if nums[mid] == target:
        return mid
    elif target < nums[mid]:
        return inserter(nums, first, mid - 1, target)
    else:
        return inserter(nums, mid + 1, last, target)


def searchInsert(nums, target):
    if target < nums[0]:
        return 0
    elif target > nums[-1]:
        return len(nums)
    return inserter(nums, 0, len(nums) - 1, target)


# 测试:3插入[2,4,6,8]的正确位置是索引1
print(searchInsert([2, 4, 6, 8], 3))

运行上述代码会正确输出1,无类型报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 13:30:54