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的正则表达式re模块的常用方法

    python的正则表达式re模块的常用方法

    Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作,在文本解析、复杂字符串分析和信息提取时是一个非常有用的工具,下面我主要总结了re的常用方法
    2013-03-03
  • 分享一个常用的Python模拟登陆类

    分享一个常用的Python模拟登陆类

    这篇文章主要分享的是一个常用的Python模拟登陆类,而且可以支持cookie保存,十分的实用,这里推荐给大家,有需要的小伙伴可以参考下。
    2015-03-03
  • Python中的XML库4Suite Server的介绍

    Python中的XML库4Suite Server的介绍

    这篇文章主要介绍了Python中的XML库4Suite Server,来自于IBM官方网站,需要的朋友可以参考下
    2015-04-04
  • python 绘图模块matplotlib的使用简介

    python 绘图模块matplotlib的使用简介

    这篇文章主要介绍了python 绘图模块matplotlib的使用简介,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-03-03
  • Python Celery动态添加定时任务生产实践指南

    Python Celery动态添加定时任务生产实践指南

    elery是一种异步任务队列,如果还不熟悉这个开源软件的请先看看官方文档,快速入门,下面这篇文章主要给大家介绍了关于Python Celery动态添加定时任务生产实践的相关资料,需要的朋友可以参考下
    2022-08-08
  • 利用pandas如何实现类似sql中的left join操作

    利用pandas如何实现类似sql中的left join操作

    这篇文章主要介绍了利用pandas如何实现类似sql中的left join操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • 安装pycurl报错Could not run curl-config: 'curl-config'

    安装pycurl报错Could not run curl-config: &ap

    这篇文章主要为大家介绍了安装pycurl报错Could not run curl-config: 'curl-config'解决方法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • 如何使用Python创建json文件

    如何使用Python创建json文件

    众所周知JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,这篇文章主要给大家介绍了关于如何使用Python创建json文件的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • pytorch更新tensor中指定index位置的值scatter_add_问题

    pytorch更新tensor中指定index位置的值scatter_add_问题

    这篇文章主要介绍了pytorch更新tensor中指定index位置的值scatter_add_问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • Python进阶篇之字典操作总结

    Python进阶篇之字典操作总结

    字典是Python语言中唯一的映射类型。字典对象是可变的,它是一个容器类型,能存储任意个数的Python对象,其中也可包括其他容器类型。在学习了 Python 基本的字典操作后,通过学习本文的这些进阶操作,让写出的代码更加优雅简洁和pythonic。下面来一起看看吧。
    2016-11-11

最新评论