You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何保留嵌套列表中每个子列表的最后一个元素

原代码错误说明

你的代码存在两个本质问题,完全偏离了需求逻辑:

  • list.remove()是原地修改列表的方法,没有返回值(返回值固定为None)。你在列表推导的判断条件中调用这个方法,会在遍历原列表的过程中直接改动原列表的结构,直接把原列表的最后一个子列表删掉了,这就是你看到输出少了最后一个子列表的直接原因。
  • 你的判断逻辑是筛选「不等于None的子列表」,从头到尾没有对子列表内部的元素做任何截取操作,根本不可能实现「只保留子列表最后一个元素」的需求。
正确实现方案

要得到你预期的输出,直接在遍历子列表时截取最后一个元素、包装为单元素列表即可,写法非常简洁:

lst = [['Hello', 'World'], ['Hello', 'E', 'Planet'], ['Planet', 'World', 'Earth']]
lst_new = [[item[-1]] for item in lst]
print(lst_new)
# 运行结果:[['World'], ['Planet'], ['Earth']]

如果你不需要保留原列表,想要直接在原嵌套列表上修改,可以用切片删除的方式处理每个子列表:

for sub in lst:
    # 删除子列表中除最后一个元素外的所有内容
    del sub[:-1]
print(lst)
# 运行结果:[['World'], ['Planet'], ['Earth']]

补充说明:如果你的嵌套列表中可能存在空的子列表,上述写法会触发索引错误,可以在推导式中加过滤条件:[[item[-1]] for item in lst if item],自动跳过空的子列表。

内容的提问来源于stack exchange,提问作者ducttape101

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 05:27:21