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

如何在列表中按原位置分别对奇数、偶数进行排序?

实现方案

可以按以下步骤实现你要的排序效果:

  1. 先从原列表中筛选出所有奇数和偶数,分别对它们进行排序
  2. 遍历原列表,根据每个位置元素的奇偶性,从排序后的奇数/偶数列表中依次取出元素放回对应位置

代码示例

s = [5, 6, 4, 7, 11, 14, 12, 1, 3]

# 提取并排序奇数、偶数
sorted_odds = sorted(num for num in s if num % 2 != 0)
sorted_evens = sorted(num for num in s if num % 2 == 0)

# 转为迭代器,高效获取下一个元素
odd_iterator = iter(sorted_odds)
even_iterator = iter(sorted_evens)

# 构建结果列表
result = []
for num in s:
    if num % 2 != 0:
        result.append(next(odd_iterator))
    else:
        result.append(next(even_iterator))

print(result)  # 输出: [1, 4, 6, 3, 5, 12, 14, 7, 11]

说明

  • 这样做既保证了原列表中奇数、偶数的位置完全不变,只是把对应位置的元素替换成排序后的同奇偶元素
  • 使用迭代器代替列表pop(0)操作,避免了频繁的列表元素移位,效率更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 12:33:14