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

如何提取列表奇数并排序反转后放回原位置生成合并列表

数组奇数排序反转后归位的实现方案

需求梳理

核心操作分为三步:

  • 从原数组中筛选出所有奇数
  • 对奇数列表先排序再反转(等价于直接降序排序)
  • 将处理后的奇数按原数组中奇数的位置依次替换,偶数位置保留原数值不变

修正后的代码实现

def sort_array(array):
    # 提取奇数并完成排序+反转(降序排序一步到位)
    processed_odds = sorted((num for num in array if num % 2 != 0), reverse=True)
    # 转为迭代器,方便逐个取出处理后的奇数
    odd_generator = iter(processed_odds)
    # 遍历原数组,替换奇数位置的元素
    return [next(odd_generator) if num % 2 != 0 else num for num in array]

代码说明

  1. 提取并处理奇数:用生成器表达式提取原数组中的奇数(比列表推导式更节省内存),通过sorted(..., reverse=True)直接完成升序排序后反转的操作,一步到位效率更高。
  2. 迭代器替换:把处理后的奇数转为迭代器,遍历原数组时可逐个取出元素,无需手动维护索引。
  3. 生成结果数组:通过列表推导式遍历原数组,遇到奇数就从迭代器中取出处理后的元素,偶数直接保留原数值,最终得到符合要求的数组。

示例测试

输入:[5, 2, 9, 4, 3, 6]

  • 提取奇数:[5,9,3]
  • 处理后奇数:[9,5,3](排序后反转/降序排序结果)
  • 最终输出:[9, 2, 5, 4, 3, 6]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 21:00:07