Python列表元素的添加和删除

我们创建的大多数列表都是动态的,这意味着,列表创建后,程序会在运行的过程中设置和修改列表中的元素。例如,你的好朋友名单可能发生变动,要么有新的好朋友加入名单,要么有的人已经不再是你的好朋友了。

Python 添加列表元素

向列表中添加新元素时,最简单的方式是将元素附加到列表末尾。我们还是使用之前的示例,如果又有了新的朋友 Frozy,那么要在列表末尾添加新的元素。

append() 方法

方法 append() 可以将元素“Frozy”添加到列表末尾,而不会影响列表中的其他元素。

>>> bestFriends.append("Frozy")
>>> print(bestFriends)
['Christina', 'Mark', 'Justin', 'Jonny', 'Tom', 'Marry', 'Jenny', 'Daniel', 'Tony', 'Frozy']


我们也可以先创建一个空列表,再使用一系列的 append() 语句添加元素。下面来创建一个关于水果的空的列表 fruits,再在其中添加元素 "apple" "banana" "orange" 和 "grape" 如图1所示。

水果列表
图1:水果列表

用如下的代码就可以完成这些操作:

>>> fruits=[]
>>> fruits.append("apple")
>>> fruits.append("banana")
>>> fruits.append("orange")
>>> fruits.append("grape")
>>> print(fruits)
['apple', 'banana', 'orange', 'grape']

首先,用 fruits = [] 创建了一个空列表。然后,在接下来的每一行中,都使用 append() 方法为列表添加一个值。一旦填充完了这个列表,我们就可以用 print() 函数把列表中的内容全部输出到屏幕上。

这种创建列表的方法很常见,因为经常要等到程序运行后,我们才知道用户要在程序中存储哪些数据。这样就可以先创建一个空列表,用于存储数据,等到需要的时候,再将新值添加到列表中。

insert() 方法

除了 append() 方法,我们还可以使用 insert() 方法来给列表添加新的元素。和 append() 方法不同,insert() 方法可以将新元素添加到列表中的任意位置,为此,我们需要指定新元素的索引。还是以 fruits 列表为例,假设我们现在要在第2个位置插入 "cherry"。

用下面的代码就可以做到:

>>> fruits.insert(1,"cherry")
>>> print(fruits)
['apple', 'cherry', 'banana', 'orange', 'grape']

在插入新元素后,列表如图2所示。

图2:插入新元素后

在这个示例中,我们用到了 insert() 方法。

需要注意的是,前面介绍过,列表的索引是从 0 开始计数的,所以索引1表示列表中第2个位置,因此会把 "cherry" 插入到了 "banana" 前面,现在 "cherry" 成为列表中的第2个元素,其后的元素的索引依次增加1位,"banana" 成为第3个元素,"orange" 成为第4个元素,以此类推。

Python 删除列表元素

我们经常需要从列表中删除一个或多个元素,例如,假设我们想要把 "orange" 从 fruits 列表中删除。

del 语句

如果我们已经知道了要删除的元素的索引,就可以使用del语句。在关键字 del 后面加上要删除的列表元素就可以了,因为 "orange" 在列表中的索引是 3,所以在 fruits 后面的方括号中放上索引3。

>>> print(fruits)
['apple', 'cherry', 'banana', 'orange', 'grape']
>>> del fruits[3]
>>> print (fruits)
['apple', 'cherry', 'banana', 'grape']

可以看到,我们已经将“orange” 成功地从列表fruits中删除了。

remove() 方法

如果我们不知道要删除的元素的索引,只知道它的值,就可以使用 remove() 方法来删除指定的元素。还是以 fruits 列表为例,让我们重新为列表赋值。

>>> fruits=["apple","cherry","banana","orange","grape"]
>>> print(fruits)
['apple', 'cherry', 'banana', 'orange', 'grape']


还是要删除 “orange” ,这次我们使用 remove() 方法,并且放入括号的值就是 “orange”。

>>> fruits.remove("orange")
>>> print(fruits)
['apple', 'cherry', 'banana', 'grape']

可以看到,我们已经成功地将 "orange" 从列表 fruits 中删除了。

pop() 方法

有时候,我们要将元素从列表中删除,并且接下来要继续使用它的值,这个时候可以使用 pop() 方法。还是以 fruits 列表为例,我们想要把列表中的最后一个元素删除,并且告诉大家所删除的水果的名称是什么。
  • 首先,我们把现有的 fruits 列表中的元素输出显示到屏幕上,可以看到列表中的元素有 "apple" "cherry" "banana" "orange" 和 "grape"。
  • 然后,调用pop()方法删除列表中的最后一个元素,也就是  "grape",并且将其赋值给变量 poppedFruit。将字符串 "The popped fruit is " 和变量 poppedFruit 连接到一起,输出到屏幕上,我们看到的是 "The popped fruit is grape"。
  • 最后打印出 fruits 列表中剩余的元素,也就是 "apple" "cherry" "banana" 和 "orange",可以看到,列表中已经不存在 "grape" 了。

>>> fruits=["apple","cherry","banana","orange","grape"]
>>> print(fruits)
['apple', 'cherry', 'banana', 'orange', 'grape']
>>> poppedFruit=fruits.pop()
>>> print("The popped fruits is "+poppedFruit)
The popped fruits is grape
>>> print(fruits)
['apple', 'cherry', 'banana', 'orange']


另外,我们也可以使用 pop() 方法来删除列表中任何位置的元素,只要在括号中指定要删除的元素的索引就可以了。例如,我们要删除上述 fruits 列表中的第 3 个元素 "banana",那么就在 pop() 的括号中指定索引 2,代码如下所示。

>>> otherPoppedFruit=fruits.pop(2)
>>> print("The other popped fruit is "+otherPoppedFruit)
The other popped fruit is banana
>>> print(fruits)
['apple', 'cherry', 'orange']

可以看到,我们删除的元素是 "banana",fruits 列表中剩余的元素是 "apple" "cherry" 和 "orange"。

提示:我们看到 pop() 方法和 del 语句的效果是一样的,那二者之间有什么区别呢?

如果不确定该使用哪一种方法,有一个简单的判断标准:如果从列表中删除一个元素,并且不再使用这个元素,就用 del 语句;如果删除这个元素后还想要继续使用它的值,就用 pop() 方法。