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

Python代码对输入数组的处理逻辑问询

Python代码对输入数组的处理逻辑问询

嘿,咱们一步步拆解这段代码的处理逻辑,搞明白最终结果是怎么来的~

给定输入

首先我们有原始数组:

C = [4, 3, 2, 5, 6, 6, 8, 7]

代码逐行解析

  1. 生成索引数组:

    ind = range(len(C))
    

    这行代码会生成包含数组C所有索引的序列,也就是[0, 1, 2, 3, 4, 5, 6, 7](对应C的第0到第7个元素)。

  2. 自定义规则排序索引:

    ind.sort(cmp = lambda i, j: C[j] - C[i])
    

    这里的核心是sort方法的cmp参数:这个lambda函数用来定义两个索引i和j的排序规则:

    • 当C[j] - C[i] > 0时,说明C[j]的值比C[i]大,排序后j会排在i前面;
    • 当结果等于0时,两个索引的相对位置保持原顺序;
    • 当结果小于0时,i会排在j前面。
      简单说,这就是按照数组C中对应元素的降序来排序索引。

对应排序过程

我们把索引和C的对应元素一一对应:

  • 索引0 → 4,索引1 → 3,索引2 → 2
  • 索引3 → 5,索引4 → 6,索引5 → 6
  • 索引6 → 8,索引7 → 7

按照C元素降序排列索引的话:

  • 最大元素是8(对应索引6)→ 排第1位
  • 其次是7(对应索引7)→ 排第2位
  • 接下来是两个6(对应索引4、5,保持原顺序)→ 排第3、4位
  • 然后是5(对应索引3)→ 排第5位
  • 接着是4(对应索引0)→ 排第6位
  • 然后是3(对应索引1)→ 排第7位
  • 最小元素是2(对应索引2)→ 排第8位

最终排序后的索引数组就是:

[6, 7, 4, 5, 3, 0, 1, 2]

备注:内容来源于stack exchange,提问作者palanisr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 17:33:07