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

如何以最简方式一次性替换列表中多个非连续元素?代码优化求助

优化方案

可以一步完成类型转换,无需先统一转成float再逐个修改特定索引的类型。先定义需要转为整数的索引集合,在列表推导时根据索引判断转换类型:

int_indices = {0, 1, 4, 5, 8}
table_body_line_striped_typed = [
    int(arg) if idx in int_indices else float(arg)
    for idx, arg in enumerate(table_body_line_striped)
]

思路说明

  • 用enumerate同时获取元素索引和值,避免先全量转float再二次修改的冗余操作
  • 用集合存储需要转int的索引,判断操作的时间复杂度为O(1),效率更高
  • 类型转换规则集中在一处,代码逻辑紧凑,可读性和维护性更强

如果追求极致精简,也可以直接把索引集合写在推导式内:

table_body_line_striped_typed = [
    int(arg) if idx in {0,1,4,5,8} else float(arg)
    for idx, arg in enumerate(table_body_line_striped)
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 12:03:22