正负混合排序,正数在前,负数在后

最近看到一道面试题很有意思:

用一个lambda函数实现排序,排序后正数在前(由小到大),负数在后(由大到小),如列表[7,-8,5,4,0,-2,-5],排序后变为[0, 4, 5, 7, -2, -5, -8]

答案如下,有待优化:

list = [7,-8,5,4,0,-2,-5]
list.sort(key=lambda x:x*-100 if x<0 else x )
print(list)
时间: 2024-08-02 09:00:23

正负混合排序,正数在前,负数在后的相关文章

js排序 奇数在前,偶数在后,升序排序

面试遇到了这样一个问题,由于自己对sort还不是特别了解,又是笔试,无法在线调试.回家后了解了一下,竟然5分钟就写出来了. <!DOCTYPE html><html><head><meta charset="utf-8"><title></title></head><body><script>var arr = [1,4,2,8,3,5,10,9,7,6,41,58]; // 排

hdu4857 逃生 反拓扑排序+优先队列, 靠前的数字的优先输出.

逃生 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 734    Accepted Submission(s): 199 Problem Description 糟糕的事情发生啦,现在大家都忙着逃命.但是逃命的通道很窄,大家只能排成一行. 现在有n个人,从1标号到n.同时有一些奇怪的约束条件,每个都形如:a必须在b之前. 同时,社会是

汉字和数字混合排序

最近需要实现汉字和数字混合排序的功能,但在网上找了好久,没有找到合适的.比如 需要将下面的 数据排序:"测试1,测试20,测试10,测试2".用网络上别人写的算法去排序 ,最终得到的结果是:测试1,测试10,测试2,测试20.但这个结果并不是我想要的,我需要的是 汉字和数字混合排序,汉字按照首字母排列,数字也需要按照从小到大排序.所以希望得到的实际结果应该是:测试1,测试2,测试10,测试20. 既然网络上没有合适的算法,那就只好自己写了.最终只找到一个比较 搓的办法,但还是能实现 汉

javascript 自己实现数字\字母和中文的混合排序方法 by FungLeo

javascript 自己实现数字\字母和中文的混合排序方法(纯粹研究,不实用) 前言 在上一篇博文<javascript 数组排序sort方法和自我实现排序方法的学习小结>中,我用自己的方法实现了数字数组的排序. 当然,实际运用中,我还是会使用sort方法更加方便.但是,我上一篇博文,仅仅是实现了数字排序,而srot方法默认可是能给字母实现排序的哦!而我的代码只能排序数字,看起来还是弱弱的. 所以,我得加上能排字母甚至中文的排序方法. 实现代码 $(function(){ var arr =

【C语言】将正数转成负数,将负数转成正数

//将正数转成负数,将负数转成正数 #include <stdio.h> int change(int num) { if (num < 0) { num = ~(num - 1); } else if (num >0) { num = ~num + 1; } return num; } int main() { printf("%d\n", change(5)); printf("%d\n", change(-5)); printf(&qu

python统计apache、nginx访问日志IP访问次数并且排序(显示前20条)

前言:python统计apache.nginx访问日志IP访问次数并且排序(显示前20条).其实用awk+sort等命令可以实现,用awk数组也可以实现,这里只是用python尝试下. apache脚本: ips = {} with open("/root/mail_access_log-20180629") as fh:     for line in fh:         ip = line.split(" ")[0]         if 6 < le

使用TreeSet和Comparator,写TreeSetTest2 要求:对TreeSet中的元素1,2,3,4,5,6,7,8,9,10进行排列,排序逻辑为奇数在前偶数在后,奇数按照升序排列,偶数按照降序排列

/* * 使用TreeSet和Comparator,写TreeSetTest2 *要求:对TreeSet中的元素1,2,3,4,5,6,7,8,9,10进行排列, *排序逻辑为奇数在前偶数在后,奇数按照升序排列,偶数按照降序排列 */ import java.util.Comparator; import java.util.TreeSet; public class TreeTest2 { public static void main(String[] args) { // TODO Aut

从赢利前和赢利后分析 提高美国市场APP安装量的技巧

在分析美国应用市场基本国情的基础上,本文结合实战经验,从PR.合作.营销等角度,向有意进军美国市场的APP开发者介绍了赢利前与赢利后提升美国区应用装机量和用户量的技巧和注意事项,希望能为开发者们带来一些启示. App Store 的海量之势有增无减,应用发现变得越来越难了, 因此获取应用装机增量与优质用户不仅变得颇具挑战性,成本也相应地拉高了.其中一个问题就是如何推动应用下载量和用户量?每个人都想知道在美国这块最具吸引力.最有生长空间的市场该怎样做这件事. 过去 3 年中,海豚浏览器团队尝试过许

【算法】 调整数组顺序,使得奇数在前偶数在后,分别保证奇数和偶数之间的相对位置不变

题目:输入一个整形数组,将数组重新排序,使得所有奇数在前偶数在后,并使奇数之间和偶数之间的相对位置爆出不变. 思想:从数组开头开始遍历所有数组.当碰到偶数时,将偶数打包,即记录到目前为止偶数的个数,把这些偶数看成一个整体:当碰到奇数时,将这个奇数与前面的偶数整体对调位置. #include <stdio.h> #include <stdlib.h> void nuo(int *a,int j,int nu)                     //将奇数与前面所有偶数调换位置