一、使用切片删除列表第一个元素
Python列表是一种有序的可变序列,其中某些元素可能重复出现。列表的许多操作都是对其中的元素进行添加、删除、插入、查找等操作。在列表删除元素时,可以使用切片的方式快速实现。
>>> a = [1, 2, 3, 4, 5]
>>> a = a[1:]
>>> a
[2, 3, 4, 5]
上述代码中,第一行初始化了一个包含1-5的list,第二行使用了切片的方式将列表第一个元素删除,即从位置1开始获取list,等价于a[1:len(a)]。最后输出变量a,结果为[2, 3, 4, 5]。
切割方式删除第一个元素的优点是不改变原列表,因为列表在Python中是可变类型(Mutable),修改操作会改变列表自身,这就又引发了另一个问题:为什么不直接使用列表删除方法呢?因为使用内置的删除方法del a[0]一样可以达到删除第一个元素的目的,但这种方式会对原来的列表进行修改,当然,如果你不需要保留原列表,使用索引删除方式也是可以的。
二、使用pop()方法删除列表第一个元素
list弹出方法pop()可以删除并返回列表中指定位置的元素,位置默认为-1(即列表最后一个元素),因此pop(0)可以快速删除第一个元素,如下:
>>> a = [1, 2, 3, 4, 5]
>>> a.pop(0)
1
>>> a
[2, 3, 4, 5]
在上述代码中,首先初始化一个包含1-5的列表,然后使用pop(0)方法删除并返回第一个元素,即1,并更新a为[2,3,4,5]。
需要注意的是,pop()方法默认返回删除的元素,如果不需要这个返回值,可以快速将它给喂了狗:
>>> a = [1, 2, 3, 4, 5]
>>> a.pop(0)
>>> a
[2, 3, 4, 5]
三、使用del语句删除列表第一个元素
上面提到了,在Python中,可以使用del语句删除列表的元素,例如:
>>> a = [1, 2, 3, 4, 5]
>>> del a[0]
>>> a
[2, 3, 4, 5]
上述代码使用del语句删除列表a的第一个元素,等价于pop(0)方式和切片方式的操作,但是del方法没有返回值,而且是对原列表进行操作,也就没办法保留原列表内容。当处理大量列表删除操作时,推荐使用切片方式,因为它比其他方法更快,也更安全。
四、使用列表解析删除列表第一个元素
好的,我们已经介绍了使用切片、pop()、del语句删除列表第一个元素的方式,那么来一种比较新颖的方式吧:使用列表解析实现删除第一个元素:
>>> a = [1, 2, 3, 4, 5]
>>> a = [x for i, x in enumerate(a) if i != 0]
>>> a
[2, 3, 4, 5]
上述代码解析:第一行是原始的列表,第二行是通过 for ... in ... 篩选出来的,for循环枚举列表a中每个元素的对应索引和值,仅仅保留索引值不为0的元素。这个方法在追求高性能的场景下并不理想,但在一定的场景下,例如使用Python函数式编程编码时,它可以是一种可选的方式。