在 Python 中有很多方法可以获取到列表的最后一个元素,本文介绍以下四种方法:
- 正向索引法
- 负向索引法 (性能最好)
- 解包法
- pop法
以上方法的使用示例如下。
# 定义一个列表 a_list = [1,3,5,7,9] # 正向索引法 last_item = a_list[len(a_list)-1] # 负向索引法 last_item = a_list[-1] # 解包法 *_, last_item = a_list # pop法 last_item = a_list.pop()
第三种方法看起来可能比较陌生,它是使用了 Python 可迭代对象的解包方法 (unpack) 实现的,感兴趣的朋友可以阅读我的文章: 如何在 Python 中解包可迭代对象。
下面使用 timeit 库测试一下前3种方法的性能,测试代码如下:
import timeit setup = """ a_list = [1,3,5,7,9] """ method_1_test_code = """ last_item = a_list[len(a_list)-1] """ method_2_test_code = """ last_item = a_list[-1] """ method_3_test_code = """ *_, last_item = a_list """ method_1_taking_time = timeit.timeit(stmt=method_1_test_code, setup=setup, number=100) method_2_taking_time = timeit.timeit(stmt=method_2_test_code, setup=setup, number=100) method_3_taking_time = timeit.timeit(stmt=method_3_test_code, setup=setup, number=100) print('正向索引法耗时: ' + str(method_1_taking_time)) print('负向索引法耗时: ' + str(method_2_taking_time)) print('解包法: ' + str(method_3_taking_time))
测试结果:
正向索引法耗时: 1.2899981811642647e-05 负向索引法耗时: 6.799993570894003e-06 解包法: 3.91000066883862e-05
从测试结果可以看出负向索引法性能最好。
有关 Python 代码运行速度的测试方法可参见我的文章:如何测试 Python 代码的速度 - datetime, timeit。