通常情况下,我们在 python 中向列表的末尾添加元素。然而,如果我们得到一个排序的列表,并且要求我们在插入一个新的元素时保持元素的顺序,这可能会成为一项乏味的任务。在这篇文章中,我们将讨论在Python中在一个排序的列表中插入一个元素的不同方法。
如何在一个已排序的列表中插入一个元素?
如果我们得到一个排序的列表,并且要求我们在插入一个新元素时保持元素的顺序,我们首先需要找到可以插入新元素的位置。之后,我们可以使用切片或insert() 方法将该元素插入列表中。
使用切分法
要使用切片法在一个排序的列表中插入一个新元素,我们首先要找到插入元素的位置。为此,我们将找到列表中的元素大于要插入的元素的索引。之后,我们将把列表分成两部分,一部分包含所有小于要插入的元素,另一部分包含所有大于或等于要插入的元素。
在创建完切片后,我们将创建一个以要插入的元素为唯一元素的列表。此后,我们将把这些片断连接起来。通过这种方式,我们可以创建一个包含新元素的排序列表。你可以在下面的例子中看到这一点。
myList = [1, 2, 3, 5, 6, 7, 8, 9, 10]
print("Original list is:", myList)
element = 4
print("The element to be inserted is:", element)
l = len(myList)
index = 0
for i in range(l):
if myList[i] > element:
index = i
break
myList = myList[:index] + [element] + myList[index:]
print("The updated list is:", myList)
输出。
Original list is: [1, 2, 3, 5, 6, 7, 8, 9, 10]
The element to be inserted is: 4
The updated list is: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
使用 insert() 方法
在找到大于要插入的元素的索引后,我们可以使用insert() 方法在排序的列表中插入该元素。insert() 方法,当在一个列表上调用时,将索引作为它的第一个输入参数,将要插入的元素作为第二个输入参数。执行后,该元素被插入到列表中。
在找到大于要插入的元素后,我们将使用insert() 方法插入该元素之前的元素,如下图所示。
myList = [1, 2, 3, 5, 6, 7, 8, 9, 10]
print("Original list is:", myList)
element = 4
print("The element to be inserted is:", element)
l = len(myList)
index = 0
for i in range(l):
if myList[i] > element:
index = i
break
myList.insert(index, element)
print("The updated list is:", myList)
输出。
Original list is: [1, 2, 3, 5, 6, 7, 8, 9, 10]
The element to be inserted is: 4
The updated list is: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
使用bisect模块在排序的列表中插入一个元素
bisect 模块为我们提供了insort() 函数,我们可以用它在一个排序的列表中插入一个元素。 insort() 方法将排序后的列表作为其第一个输入参数,将要插入的元素作为其第二个输入参数。执行后,该元素被插入到列表中。你可以在下面的例子中观察到这一点。
import bisect
myList = [1, 2, 3, 5, 6, 7, 8, 9, 10]
print("Original list is:", myList)
element = 4
print("The element to be inserted is:", element)
bisect.insort(myList, element)
print("The updated list is:", myList)
输出。
Original list is: [1, 2, 3, 5, 6, 7, 8, 9, 10]
The element to be inserted is: 4
The updated list is: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
结论
在这篇文章中,我们讨论了在 python 中向排序的列表中插入元素的不同方法。