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

基于指定列表顺序排序目标列表的Python代码问题排查

问题排查与修复方案

现有代码问题

  • 代码中的counter变量全程未更新,始终取值为0,因此仅会匹配array2的第一个元素0,遍历array1后仅能得到所有0元素,就是你看到的[0,0,0,0]结果
  • 没有按照array2的排序规则,依次处理后续的1、-1两个元素的匹配逻辑

修复方案

基础实现(易理解)

外层先遍历array2的每个排序基准值,内层遍历array1收集所有和当前基准值相等的元素,依次拼接即可:

def patternSort(arr1, arr2):
    res = []
    # 按array2的顺序逐个处理基准值
    for standard in arr2:
        for num in arr1:
            if num == standard:
                res.append(num)
    print(res)

优化实现(性能更高)

如果array1数据量较大,可先统计array1各元素的出现次数,再按array2顺序批量生成结果,只需遍历两次列表即可完成:

from collections import Counter

def patternSort(arr1, arr2):
    num_count = Counter(arr1)
    res = []
    for standard in arr2:
        # 批量追加当前基准值的所有匹配元素
        res.extend([standard] * num_count[standard])
    print(res)

测试运行

调用你提供的测试用例:

array1 = [1, 0, -1, 0, 0, 1, 1, -1, 0, 1]
array2 = [0, 1, -1] 
patternSort(array1, array2)

输出结果为:[0, 0, 0, 0, 1, 1, 1, 1, -1, -1],符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:15:04