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

Python如何删除列表中每个元组内除最后一个外的所有整数

Python列表元组元素筛选实现方案

原有代码问题

你编写的列表推导仅遍历外层列表的元组元素,判断元组本身是否为整数类型,没有处理每个元组内部的子元素,因此无法实现需求。

实现逻辑

核心处理逻辑针对每个元组执行两步操作:

  • 筛选出元组内所有非整数类型的元素
  • 提取元组内最后一个出现的整数元素
  • 将两部分结果拼接为新元组,最终组成结果列表

代码实现

可读性优先写法

mylist = [('a',1,'b',2,'c',3), ('d',1,'e',2),('f',1,'g',2,'h',3,'i',4)]
result = []
for tup in mylist:
    # 提取所有非整数元素
    non_int_items = [item for item in tup if not isinstance(item, int)]
    # 提取所有整数元素后取最后一个
    all_ints = [item for item in tup if isinstance(item, int)]
    last_int = all_ints[-1]
    # 拼接为新元组加入结果
    result.append(tuple(non_int_items + [last_int]))

print(result)

效率优化单行写法

通过反向遍历快速定位最后一个整数,避免重复遍历元组:

mylist = [('a',1,'b',2,'c',3), ('d',1,'e',2),('f',1,'g',2,'h',3,'i',4)]
result = [tuple([x for x in t if not isinstance(x, int)] + [next(i for i in reversed(t) if isinstance(i, int))]) for t in mylist]

输出结果

两种写法运行后均可得到预期输出:
[('a', 'b', 'c', 3), ('d', 'e', 2), ('f', 'g', 'h', 'i', 4)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:54:05