python去掉列表最后一个元素的方法汇总

 更新时间:2026年04月14日 08:19:49   作者:detayun  
这篇文章主要介绍了python去掉列表最后一个元素的常用方法,主要包括切片、pop()和del,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下

在 Python 中,可以通过多种方法去掉列表的最后一个元素。以下是几种常见的方法:

方法 1:使用切片(推荐)

my_list = [1, 2, 3, 4, 5]
my_list = my_list[:-1]  # 切片去掉最后一个元素
print(my_list)  # 输出: [1, 2, 3, 4]
  • 原理my_list[:-1] 表示从开始到倒数第一个元素(不包括最后一个)。
  • 优点:不修改原列表,而是返回一个新列表(如果直接赋值给原变量,则相当于修改)。

方法 2:使用pop()方法

my_list = [1, 2, 3, 4, 5]
my_list.pop()  # 去掉最后一个元素(直接修改原列表)
print(my_list)  # 输出: [1, 2, 3, 4]
  • 原理pop() 默认移除并返回列表的最后一个元素(如果不指定索引)。
  • 优点:直接修改原列表,适合需要操作原列表的情况。
  • 缺点:如果列表为空,会抛出 IndexError

方法 3:使用del语句

my_list = [1, 2, 3, 4, 5]
del my_list[-1]  # 删除最后一个元素
print(my_list)  # 输出: [1, 2, 3, 4]
  • 原理del 直接删除指定索引的元素(-1 表示最后一个)。
  • 优点:直接修改原列表,效率较高。
  • 缺点:如果列表为空,会抛出 IndexError

方法 4:使用remove()(不推荐)

my_list = [1, 2, 3, 4, 5]
if my_list:  # 先检查列表是否非空
    my_list.remove(my_list[-1])  # 移除最后一个元素(不推荐)
print(my_list)  # 输出: [1, 2, 3, 4]

原理remove() 根据值删除元素,这里传入最后一个元素的值。

缺点

  • 需要先知道最后一个元素的值。
  • 如果列表中有重复值,会删除第一个匹配的元素(不一定是最后一个)。
  • 不推荐使用,仅作演示。

总结

方法是否修改原列表适用场景注意事项
切片 [:-1]否(需重新赋值)需要保留原列表最安全,推荐
pop()需要操作原列表空列表会报错
del需要操作原列表空列表会报错
remove()不推荐容易出错

推荐做法

  • 如果不需要保留原列表 → 用 pop()del
  • 如果需要保留原列表 → 用切片 my_list[:-1]

示例代码(推荐切片):

my_list = [1, 2, 3, 4, 5]
new_list = my_list[:-1]  # 不修改原列表
print("原列表:", my_list)  # 输出: [1, 2, 3, 4, 5]
print("新列表:", new_list)  # 输出: [1, 2, 3, 4]

示例代码(推荐pop()):

my_list = [1, 2, 3, 4, 5]
if my_list:  # 安全检查
    my_list.pop()  # 修改原列表
print(my_list)  # 输出: [1, 2, 3, 4]

方法补充

下面是小编整理的其他Python列表去掉最后一个元素的方法,大家可以参考下

1. pop() 方法(最常用,移除并返回)

pop() 是内置列表方法,不传参数时默认移除并返回最后一个元素。

lst = [1, 2, 3, 4, 5]
removed = lst.pop()
print(lst)      # [1, 2, 3, 4]
print(removed)  # 5
  • 修改原列表 ✅
  • 返回值:被移除的元素
  • 时间复杂度:O(1)(因为移除的是尾部元素)
  • 适用场景:需要获取被移除的元素,或者需要修改原列表。

2. 切片 [:-1](创建新列表,原列表不变)

通过切片生成一个新的列表,包含原列表除最后一个元素外的所有元素。

lst = [1, 2, 3, 4, 5]
new_lst = lst[:-1]
print(lst)      # [1, 2, 3, 4, 5]  原列表不变
print(new_lst)  # [1, 2, 3, 4]
  • 修改原列表 ❌(原列表不变,生成新列表)
  • 返回值:新列表
  • 时间复杂度:O(n)(需要复制除最后一个外的所有元素)
  • 适用场景:需要保留原列表不变,或者函数式编程风格。

3. del 语句(删除最后一个元素,不返回)

使用 del lst[-1] 删除最后一个位置的元素,不返回被删除的值。

lst = [1, 2, 3, 4, 5]
del lst[-1]
print(lst)      # [1, 2, 3, 4]
  • 修改原列表 ✅
  • 返回值:无(删除操作,无返回值)
  • 时间复杂度:O(1)
  • 适用场景:只需删除元素,不需要知道删除的是什么值。

4. 负索引配合 pop(-1)

pop(-1) 与 pop() 等价,显式使用负索引更明确。

lst = [1, 2, 3, 4, 5]
removed = lst.pop(-1)
print(lst)      # [1, 2, 3, 4]
print(removed)  # 5

效果同 pop(),仅仅是显式指明了位置。

5. 重新赋值 lst = lst[:-1](改变原列表引用)

将原变量重新指向切片生成的新列表,原列表如果没有其他引用则被垃圾回收。

lst = [1, 2, 3, 4, 5]
lst = lst[:-1]
print(lst)      # [1, 2, 3, 4]
  • 修改原变量引用的列表(但原列表对象可能未被修改,而是创建了新对象)
  • 注意:如果有其他变量也指向原列表,那些变量仍会看到原列表。

6. 使用 list 解包(仅适用于需要丢弃最后一个元素且生成新列表)

lst = [1, 2, 3, 4, 5]
*rest, _ = lst   # 将最后一个元素丢弃
print(rest)      # [1, 2, 3, 4]
  • 修改原列表 ❌(生成新列表)
  • 适用场景:配合解包语法,可读性较好,但需要 Python 3.0+。

方法对比总结表

方法修改原列表返回值时间复杂度是否创建新列表典型代码
pop()被移除元素O(1)lst.pop()
pop(-1)被移除元素O(1)lst.pop(-1)
del lst[-1]O(1)del lst[-1]
切片 [:-1]新列表O(n)new = lst[:-1]
lst = lst[:-1]改变引用O(n)lst = lst[:-1]
解包 *rest, _ = lst无(生成新列表)O(n)*rest, _ = lst

选择建议

  • 如果你需要修改原列表并获取被删除的元素:使用 lst.pop()
  • 如果你只需要修改原列表,不关心被删除的值:使用 del lst[-1]
  • 如果你需要保留原列表不变,获得一个新的去掉末尾元素的列表:使用切片 lst[:-1]
  • 如果你希望代码表达更函数式、不修改原数据:推荐切片

绝大多数场景下,pop() 是最直观且高效的选择。

到此这篇关于python去掉列表最后一个元素的方法汇总的文章就介绍到这了,更多相关python去掉列表最后一个元素内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python中的turtle库函数简单使用教程

    python中的turtle库函数简单使用教程

    这篇文章主要介绍了python中的turtle库函数简单使用教程。本文通过图片的形式给大家展示的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-07-07
  • Python eval的常见错误封装及利用原理详解

    Python eval的常见错误封装及利用原理详解

    这篇文章主要介绍了Python eval的常见错误封装及利用原理详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03
  • Python如何筛选序列中的元素的方法实现

    Python如何筛选序列中的元素的方法实现

    这篇文章主要介绍了Python如何筛选序列中的元素的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • python实现三次样条插值

    python实现三次样条插值

    这篇文章主要为大家详细介绍了python实现三次样条插值,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • Python实战小游戏飞机大战详解

    Python实战小游戏飞机大战详解

    飞机大战想必是很多人童年时期的经典游戏,我们依旧能记得抱个老人机娱乐的场景,下面这篇文章主要给大家介绍了关于如何利用python写一个简单的飞机大战小游戏的相关资料,需要的朋友可以参考下
    2021-11-11
  • 解决python 自动安装缺少模块的问题

    解决python 自动安装缺少模块的问题

    今天小编就为大家分享一篇解决python 自动安装缺少模块的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • 关于tf.nn.dynamic_rnn返回值详解

    关于tf.nn.dynamic_rnn返回值详解

    今天小编就为大家分享一篇关于tf.nn.dynamic_rnn返回值详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • Python基于二分查找实现求整数平方根的方法

    Python基于二分查找实现求整数平方根的方法

    这篇文章主要介绍了Python基于二分查找实现求整数平方根的方法,涉及Python的二分查找算法与数学运算相关技巧,需要的朋友可以参考下
    2016-05-05
  • 详细解读Python中的__init__()方法

    详细解读Python中的__init__()方法

    这篇文章主要介绍了Python中的__init__()方法,__init__()方法是Python学习当中重要的基础知识,需要的朋友可以参考下
    2015-05-05
  • 对numpy和pandas中数组的合并和拆分详解

    对numpy和pandas中数组的合并和拆分详解

    下面小编就为大家分享一篇对numpy和pandas中数组的合并和拆分详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04

最新评论