查找有序数值列表中新添加元素的索引
查找有序数值列表中新添加元素的索引及获取前项的方法
方法1:插入后直接查找索引
如果你的列表是无重复元素的有序列表,插入新元素后可以直接用列表的index()方法获取索引:
nums = [1, 3, 5, 7] new_num = 9 nums.append(new_num) # 若元素属于末尾追加,直接执行此操作;若需插入中间则用insert new_idx = nums.index(new_num)
注意:如果列表存在重复元素,index()只会返回第一个匹配项的索引,这种场景下该方法不适用。
方法2:插入时直接确定索引(高效推荐)
因为列表是有序的,插入前可以用Python内置的bisect模块快速找到正确的插入位置,这个位置就是新元素插入后的索引,无需事后查找:
import bisect nums = [1, 3, 5, 7] new_num = 6 # 找到保持升序的插入位置 insert_idx = bisect.bisect_left(nums, new_num) # 插入元素 nums.insert(insert_idx, new_num) # 此时insert_idx就是新元素的索引 new_idx = insert_idx
- 若需要把重复元素插入到现有相同元素的右侧,改用
bisect.bisect_right()即可。
获取前一个元素或索引
拿到新元素的索引后,直接计算前项:
# 获取前一个索引 prev_idx = new_idx - 1 if new_idx > 0 else None # 获取前一个元素 prev_element = nums[prev_idx] if prev_idx is not None else None
如果新元素是列表的第一个元素(new_idx == 0),则没有前项,返回None即可。
内容的提问来源于stack exchange,提问作者Cheesy Pig 88
相关产品推荐
相关产品推荐

