假设有两个数组,其中的元素都是数字,现在要对其排序

假设有 number,group,两个数组,其中的元素都是数字,现在要对其排序排序的规则如下:

1.如果 group里面元素,存在于numbers了里面

2.要把出现在 group 内的数字 放在 number 的那些数字之前,注意排序

numbers = [8, 3 ,1, 2, 5,4,7,6]

group = {2,3,5,7}

分析了下,应该是优先级的问题,这里使用了元组排序的方法:

numbers = [8, 3 ,1, 2, 5,4,7,6]
group = {2,3,5,7}
tmp = []
for x in numbers:
    if x in group:
        tmp.append((0, x))
    else:
        tmp.append((1, x))
tmp.sort()
print(list(map(lambda x:x[1], tmp)))

在网上看到了一个经典的代码:

def sort_priority(values,group):
    def helper(x):
        if x in group:
            return (0, x)
        return (1, x)
    values.sort(key=helper)

numbers = [8, 3 ,1, 2, 5,4,7,6]

group = {2,3,5,7}
sort_priority(numbers, group)
print(numbers)

推荐使用第二个高阶函数的方法

原文地址:https://blog.51cto.com/14730644/2473811

时间: 2024-07-31 14:33:31

假设有两个数组,其中的元素都是数字,现在要对其排序的相关文章

数组-06. 找出不是两个数组共有的元素

数组-06. 找出不是两个数组共有的元素(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 张彤彧(浙江大学) 给定两个整型数组,本题要求找出不是两者共有的元素. 输入格式: 输入分别在2行中给出2个整型数组,每行先给出正整数N(<=20),随后是N个整数,其间以空格分隔. 输出格式: 在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格.题目保证至少存在一个这样的数字.同一数字不重复

数组-06. 找出不是两个数组共有的元素(20)

1 #include<iostream> 2 using namespace std; 3 int main(){ 4 int i,j,k=0,l,a[20],b[20],c[40],m,n; 5 cin>>m; 6 for(i=0;i<m;++i) 7 cin>>a[i]; 8 cin>>n; 9 for(j=0;j<n;++j) 10 cin>>b[j]; 11 12 for(i=0;i<m;++i){ 13 for(j=0

Java比较两个数组中的元素是否相同的最简单方法

呵呵呵,实现Java比较两个数组中的元素是否相同的功能你是怎么做的?看下面最简单方法: import java.util.Arrays; public class Test { /** * Java比较两个数组中的元素是否相同 */ public static void main(String[] args) { String [] array1 = {"1","2","3"}; String [] array2 = {"3"

Java对数组的操作(三)—比較两个数组中的元素是否同样的最简单方法

呵呵呵,实现Java比較两个数组中的元素是否同样的功能你是怎么做的?看以下最简单方法: import java.util.Arrays; public class Test { /**                 * Java比較两个数组中的元素是否同样                 */                public static void main(String[] args) {                        String [] array1 = {"1

array_intersect() php筛选两个数组共有的元素

我们已经讲过如何筛选出连个数组中不共有的元素,今天就来看看php如何筛选出两个数组中共有的元素,例如筛选$array1和$array2共有的元素. 函数名:array_intersect(): 调用方式:array_intersect($array1,$array2): 实例: <?php    $array1 = array("a" => "green", "red", "blue", "grey&qu

找出两个数组相同的元素

题目:找出两个数组(有重)相同的元素,两种方法 public class 出两个数组相同的元素 { public static void main(String[] args) { // TODO Auto-generated method stub String[] test1 = {"damon","happy","ly","good","losers"}; String[] test2 = {&quo

找出两个数组相同的元素,并且对应的个数一样

/** * 找出两个数组相同的元素,并且对应的个数一样 * @param args */ public static void getSameNumberCount(String[] a, String[] b) { Map<String, Integer> map = new HashMap<String, Integer>(); for (int i = 0; i < a.length; i++) { if (!map.containsKey(a[i])) { map.p

7-4 找出不是两个数组共有的元素(20 分)

7-4 找出不是两个数组共有的元素(20 分) 给定两个整型数组,本题要求找出不是两者共有的元素. 输入格式: 输入分别在两行中给出两个整型数组,每行先给出正整数N(≤20),随后是N个整数,其间以空格分隔. 输出格式: 在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格.题目保证至少存在一个这样的数字.同一数字不重复输出. 输入样例: 10 3 -5 2 8 0 3 5 -15 9 100 11 6 4 8 2 6 -5 9 0 100 8 1 输出样

PHP实现查询两个数组中不同元素的方法

以下实例讲述了PHP实现查询两个数组中不同元素的方法.分享给大家供大家参考,具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 <?php   $a = array(   "max_allow_dialogs",   "livechat_server_ip",   "livechat_servic