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
相关产品推荐
相关产品推荐

