如何在Python的分类列表中插入元素

238 阅读3分钟

通常情况下,我们在 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 中向排序的列表中插入元素的不同方法。