Python|在排序列表中插入项目以保持顺序
使用排序列表是必不可少的,因为我们获得的大部分数据都是有序的。任何查询都可以将新数据插入到适当的位置。因此需要知道如何执行这些动态查询。让我们讨论可以执行此操作的某些方式。
方法#1:朴素的方法
在这种方法中,我们只是简单地测试该值并检查下一个元素是否大于输入元素并存储索引,然后该索引用于在该位置对该元素进行切片。
# Python3 code to demonstrate
# insertion in sorted list
# using naive method
# initializing list
test_list = [1, 2, 3, 6, 7]
# printing original list
print ("The original list is : " + str(test_list))
# insert element
k = 5
# using naive method
# insertion in sorted list
# using naive method
for i in range(len(test_list)):
if test_list[i] > k:
index = i
break
res = test_list[: i] + [k] + test_list[i :]
# printing result
print ("The list after insertion is : " + str(res))
输出:
The original list is : [1, 2, 3, 6, 7]
The list after insertion is : [1, 2, 3, 5, 6, 7]
方法#2:使用bisect.insort()
这是执行此特定任务的更简洁和推荐的方法。此方法专为此特定任务而设计,并以最有效的方式执行此任务。
# Python3 code to demonstrate
# insertion in sorted list
# using bisect.insort()
import bisect
# initializing list
test_list = [1, 2, 3, 6, 7]
# printing original list
print ("The original list is : " + str(test_list))
# insert element
k = 5
# using bisect.insort()
# insertion in sorted list
# using naive method
bisect.insort(test_list, k)
# printing result
print ("The list after insertion is : " + str(test_list))
输出:
The original list is : [1, 2, 3, 6, 7]
The list after insertion is : [1, 2, 3, 5, 6, 7]