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

Python中如何遍历整数嵌套列表并按升序插入指定列表?

问题解决方法

报错原因

你触发TypeError: 'int' object is not subscriptable的原因是:第二层for lst in sub_lst遍历得到的lst是int类型的数值(比如遍历第一个子列表[1,2]得到的就是1、2两个整数),如果你后续代码对这个int类型变量用了[]取下标操作,就会触发该报错,你的遍历逻辑本身不符合需求。

实现逻辑

你的a_list是严格按子列表数值升序排列的,每个子列表的最大值(子列表第二个元素)小于下一个子列表的最小值(子列表第一个元素),只需要找到第一个满足「子列表最小值大于b_list最大值」的位置,就是正确的插入位置。

代码实现

方法1:手动遍历查找插入位置

a_list = [[1,2], [5,6], [7,8]]
b_list = [3, 4]

insert_pos = 0
for idx, sub_list in enumerate(a_list):
    # 比较当前子列表的最大值和b_list的最小值,b更大则后移插入位置
    if sub_list[-1] < b_list[0]:
        insert_pos = idx + 1
    else:
        # a_list是升序排列,找到第一个不符合条件的就可以终止遍历
        break

# 插入到对应位置
a_list.insert(insert_pos, b_list)
print(a_list) 
# 输出结果:[[1, 2], [3, 4], [5, 6], [7, 8]]

方法2:用bisect标准库简化实现

如果不想手动写遍历逻辑,可以直接调用Python内置的bisect模块计算插入位置:

import bisect

a_list = [[1,2], [5,6], [7,8]]
b_list = [3, 4]

# 按每个子列表的第一个元素作为排序依据计算插入位置
insert_pos = bisect.bisect_left([sub[0] for sub in a_list], b_list[0])
a_list.insert(insert_pos, b_list)
print(a_list)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:06:03