首页 > 其他分享 >元素的多重排序

元素的多重排序

时间:2023-04-06 10:03:04浏览次数:40  
标签:__ 多重 group self 元素 return numbers found 排序

应用场景:渲染用户界面时,因为关键的消息和特殊的事件应该优先显示在其他信息之前。

numbers = [8, 3, 1, 2, 5, 4, 7, 6]  //原始数据
group = {8, 3, 5, 7}  //优先级高的数据,
def sort_priority(numbers, group):
    found = False

    def helper(x):  
        nonlocal found   
        if x in group:
            found = True
            return 0, x
        return 1, x

    numbers.sort(key=helper)
    return found
res = sort_priority(numbers, group)
print(res, numbers)  //打印

完善用类方法实现

# 优化 类方法
class Sorter:
    def __init__(self, group):
        self.group = group
        self.found = False

    def __call__(self, x):
        if x in self.group:
            self.found = True
            return 0, x
        return 1, x


sorter = Sorter(group)
numbers.sort(key=sorter)
print(numbers)
assert sorter.found is True

输出结果

True [3, 5, 7, 8, 1, 2, 4, 6]
[3, 5, 7, 8, 1, 2, 4, 6]

作者:朱海波

标签:__,多重,group,self,元素,return,numbers,found,排序
From: https://www.cnblogs.com/DTCLOUD/p/17291724.html

相关文章

  • Auto Chess (双指针, 极角排序)
    题目大意:释放一个45都的技能去尽可能消灭更多的敌人(在一个平面里面)  思路:技能是无线长的,于是抛弃无用信息,只保留斜率即可然后利用双指针,或者二分去做即可 ......
  • LeetCode 81. 搜索旋转排序数组 II
    1classSolution{public:boolsearch(vector<int>&nums,inttarget){intindex=-1;for(inti=0;i<nums.size()-1;++i){if(nums[i]>nums[i+1])index=i;}if(index==-1){......
  • HJ103 Redraiment的走法(梅花桩递增可走的最多步数)_排序_动态规划
    思路:该题目符合,最优结果拥有最优子结果的特征。考虑用动态规划。通过循环获取每个参数作为最后一个桩的最优子结果,后面桩的结果为前一个桩的最优子结果+1。如梅花桩“251545”。参考高赞答案,代码如下1importsys2a=int(sys.stdin.readline().strip())3b=list(map(......
  • JavaScript中数组元素删除的七大方法汇总
    原文链接:https://blog.csdn.net/u010323023/article/details/52700770 在JavaScript中,除了Object之外,Array类型恐怕就是最常用的类型了。与其他语言的数组有着很大的区别,JavaScript中的Array非常灵活。今天我就来总结了一下JavaScript中Array删除的方法。大致的分类可以分为如下......
  • 自建堆排序:
    建堆(heapification):蛮力算法空堆反复调用insert()接口,消耗时间过多,第k轮迭代需O(logK)时间,正比于其深度:总共需要O(logn!)=O(nlogn);同理于自顶向下、自左向右的上滤操作;实现时先入一个最大值元素,放在下标为0的地方,此后,元素从下标为1的地方进行建堆,假设父节点下标是i,则左右......
  • 排序查询
    DQL-排序查询1.语法select字段列表from表名orderby字段1排序方式1,字段2,排序方式2;2.排序方式asc:升序 desc:降序注意:如果是多字段排序,当第一个字段相同时,才会根据第二个字段排序 代码:select*fromemporderbyage;/*根据年龄对员工进行升序排序*/select......
  • 笔记1. O(NlogN)的排序算法
    目录准备工作递归行为——求数组的最大值master公式归并排序——912.排序数组Merge函数归并排序主函数nlogn与n^2排序本质差距小和问题剑指Offer51.数组中的逆序对快排荷兰国旗问题快排1.0快排2.0快排3.0准备工作打印数组voidPrintfNums(int*nums,intnumsSize){......
  • 使用benchmark比较插入排序与归并排序性能
    #include<benchmark/benchmark.h>#include<algorithm>#include<deque>#include<functional>#include<iostream>#include<random>#include<string>#include<vector>usingnamespacestd;staticconstint......
  • 【MySQL】MySQL基础04 — SQL学习 — DQL — 排序查询
    SQL学习—DQL—条件查询3.排序查询/*语法: select查询字段 from表名 【where筛选条件】 orderby排序字段【asc|desc】 特点: 1.asc代表升序,desc代表降序 如果不写,默认升序 2.排序字段除了可以是表达式外,还可以是别名 但WHERE后面只能是表达式!! 3.排序......
  • DOM:让一个元素跟随鼠标移动而移动
    <!DOCTYPEhtml><htmllang="en"><head>  <metacharset="UTF-8">  <metahttp-equiv="X-UA-Compatible"content="IE=edge">  <metaname="viewport"content="width=......