python的list排序序的几种方式

详解python list排序的两种实例方法
原创
204
对进行排序,提供了两个方法方法1.用List的内建list.进行排序list.sort(func=None, =None, reverse=False) Python实例:&&& list = [2,5,8,9,3]
[2,5,8,9,3]
&&& list.sort()
[2, 3, 5, 8, 9]方法2.用序列类型函数sorted(list)进行排序(从2.4开始)Python实例:&&& list = [2,5,8,9,3]
[2,5,8,9,3]
&&& sorted(list)
[2, 3, 5, 8, 9]两种方法的区别:sorted(list)返回一个,可以用作。原来的list不变,生成一个新的排好序的list对象。list.sort() 不会返回对象,改变原有的list。其他sort的实例:实例1:正向排序&&&L = [2,3,1,4]
&&&L.sort()
&&&[1,2,3,4]实例2:反向排序&&&L = [2,3,1,4]
&&&L.sort(reverse=True)
&&&[4,3,2,1]实例3:对第二个关键字排序 &&&L = [('b',6),('a',1),('c',3),('d',4)]
&&&L.sort(lambda x,y:cmp(x[1],y[1]))
&&&[('a', 1), ('c', 3), ('d', 4), ('b', 6)]实例4: 对第二个关键字排序 &&&L = [('b',6),('a',1),('c',3),('d',4)]
&&&L.sort(key=lambda x:x[1])
&&&[('a', 1), ('c', 3), ('d', 4), ('b', 6)]实例5: 对第二个关键字排序 &&&L = [('b',2),('a',1),('c',3),('d',4)]
&&&import operator
&&&L.sort(key=operator.itemgetter(1))
&&&[('a', 1), ('b', 2), ('c', 3), ('d', 4)]实例6:(DSU方法:Decorate-Sort-Undercorate)&&&L = [('b',2),('a',1),('c',3),('d',4)]
&&&A = [(x[1],i,x) for i,x in enumerate(L)] #i can confirm the stable sort
&&&A.sort()
&&&L = [s[2] for s in A]
&&&[('a', 1), ('b', 2), ('c', 3), ('d', 4)]以上给出了6中对List排序的方法,其中实例3.4.5.6能起到对以List item中的某一项为比较关键字进行排序.效率比较:cmp & DSU & key通过实验比较,方法3比方法6要慢,方法6比方法4要慢,方法4和方法5基本相当 多关键字比较排序:实例7:&&&L = [('d',2),('a',4),('b',3),('c',2)]
&&& L.sort(key=lambda x:x[1])
&&&[('d', 2), ('c', 2), ('b', 3), ('a', 4)]我们看到,此时排序过的L是仅仅按照第二个关键字来排的,如果我们想用第二个关键字排过序后再用第一个关键字进行排序呢?有两种方法 实例8:&&& L = [('d',2),('a',4),('b',3),('c',2)]
&&& L.sort(key=lambda x:(x[1],x[0]))
&&&[('c', 2), ('d', 2), ('b', 3), ('a', 4)]实例9:&&& L = [('d',2),('a',4),('b',3),('c',2)]
&&& L.sort(key=operator.itemgetter(1,0))
&&&[('c', 2), ('d', 2), ('b', 3), ('a', 4)]为什么实例8能够工作呢?原因在于tuple是的比较从左到右比较的,比较完第一个,如果相等,比较第二个以上就是详解python list排序的两种实例方法的详细内容,更多请关注php中文网其它相关文章!
江湖传言:PHP是世界上最好的编程语言。真的是这样吗?这个梗究竟是从哪来的?学会本课程,你就会明白了。
PHP中文网出品的PHP入门系统教学视频,完全从初学者的角度出发,绝不玩虚的,一切以实用、有用...
ThinkPHP是国内最流行的中文PHP开发框架,也是您Web项目的最佳选择。《php.cn独孤九贱(5)-ThinkPHP5视频教程》课程以ThinkPHP5最新版本为例,从最基本的框架常识开始,将...
本套教程,以一个真实的学校教学管理系统为案例,手把手教会您如何在一张白纸上,从零开始,一步一步的用ThinkPHP5框架快速开发出一个商业项目。
所有计算机语言的学习都要从基础开始,《PHP入门视频教程之一周学会PHP》不仅是PHP的基础部分更主要的是PHP语言的核心技术,是学习PHP必须掌握的内容,任何PHP项目的实现都离不开这部分的内容,通...
《php.cn原创html5视频教程》课程特色:php中文网原创幽默段子系列课程,以恶搞,段子为主题风格的php视频教程!轻松的教学风格,简短的教学模式,让同学们在不知不觉中,学会了HTML知识。
本课以最新版ThinkPHP5.0.10为基础进行开发,全程实录一个完整企业点,从后台到前台,从控制器到路由的全套完整教程,不论是你是新人,还是有一定开发经验的程序员,都可以从中学到实用的知识~~
ThinkPHP是一个快速、开源的轻量级国产PHP开发框架,是业内最流行的PHP框架之一。本课程以博客系统为例,讲述如何使用TP实战开发,从中学习Thinkphp的实践应用。模版下载地址:http:/...
本课程是php实战开发课程,以爱奇艺电影网站为蓝本从零开发一个自己的网站。目的是让大家了解真实项目的架构及开发过程
本课以一个极简的PHP开发框架为案例,向您展示了一个PHP框架应该具有的基本功能,以及具体的实现方法,让您快速对PHP开发框架的底层实现有一个清楚的认识,为以后学习其实的开发框架打下坚实的基础。
javascript是运行在浏览器上的脚本语言,连续多年,被评为全球最受欢迎的编程语言。是前端开发必备三大法器中,最具杀伤力。如果前端开发是降龙十八掌,好么javascript就是第18掌:亢龙有悔。...
本站9月直播课已经结束,本套教程是直播实录,没有报上名或者漏听学员福利来了,赶紧看看吧,说不定这里就有你的菜
轻松明快,简洁生动,让你快速走入HTML5的世界,体会语义化开发的魅力
JavaScript能够称得上是史上使用最广泛的编程语言,也是前端开发必须掌握的三技能之一:描述网页内容的HTML、描述网页样式的CSS以及描述网页行为的JavaScript。本章节将帮助大家迅速掌握...
《php用户注册登录系统》主要介绍网站的登录注册功能,我们会从最简单的实现登录注册功能开始,增加验证码,cookie验证等,丰富网站的登录注册功能
Bootstrap 是最受欢迎的 HTML、CSS 和 JS 框架,用于开发响应式布局、移动设备优先的 WEB 项目。为所有开发者、所有应用场景而设计,它让前端开发更快速、简单,所有开发者都能快速上手...
《PHP学生管理系统视频教程》主要给大家讲解了HTML,PHP,MySQL之间的相互协作,实现动态的网页显示和获取数据.
《php.cn独孤九贱(2)-css视频教程》课程特色:php中文网原创幽默段子系列课程,以恶搞,段子为主题风格的php视频教程!轻松的教学风格,简短的教学模式,让同学们在不知不觉中,学会了CSS知识...
《弹指间学会HTML视频教程》从最基本的概念开始讲起,步步深入,带领大家学习HTML,了解各种常用标签的意义以及基本用法,学习HTML知识为以后的学习打下基础
jQuery是一个快速、简洁的JavaScript框架。设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的...
《最新微信小程序开发视频教程》本节课程是由微趋道录制,讲述了如何申请一个微信小程序,以及开发中需要使用哪些工具,和需要注意哪些等。
文章总浏览数查看: 12299|回复: 11
请问v9专题页如何即按照listorder大小排序又按照发布时间排序?
如题,在专题页(也就是pc:content_list)中,listorder取值为0,1,2,3,分别对应id ASC,id DESC,listorder ASC,listorder DESC,只能选其一,且当选择3,也就是listorder DESC时,虽然可以根据listorder的大小排序,但默认时间是正序,也就是新发布的新闻跑到最后去了,专题首页永远只显示很早以前发的旧新闻.
请问如何能改为按发布时间倒序且同时按listorder排序? 非专题页没这个问题.
嗯,是这样子的
seo公司 发表于
也就是listorder DESC时,虽然可以根据listorder的大小排序,但默认时间是正序,也就是新发布的新闻跑到最后去 ...
发布时间倒序且同时按listorder排序
有人知道吗
只能一种排序 除非改程序
只能是按照某种排序&&顺便根据文章ID来排序&&~~~~~
世界首富 发表于
只能一种排序 除非改程序
请教要是改程序的话如何改法? 谢谢了
有人知道吗
本帖最后由 zhangyi86 于
10:38 编辑
phpcms/modules/special/classes/special_tag.class.php
把$listorder = array('`id` ASC', '`id` DESC', '`listorder` ASC', '`listorder` DESC');修改为
$listorder = array('`id` ASC', '`id` DESC', '`inputtime` ASC', '`inputtime` DESC');
zhangyi86 发表于
phpcms/modules/special/classes/special_tag.class.php
这个不是改成按发布时间排序了吗? 请问如何即按照listorder大小排序又按照发布时间排序?(即普通栏目的排序方式)
Powered by纸上得来终觉浅,绝知此事要躬行
Collections.sort方法对list排序的两种方式
Collections.sort( )分为两部分,一部分为排序规则,一部分为排序算法 。
规则用来判断对象,算法则考虑如何进行排序
对于自定义对象,sort()不知道规则,所以无法比较,这种情况下一定要定义排序规则。方式有两种:
第一种,java.lang下面的一个接口:Comparable。可以让自定义对象实现一个Comparable接口,这个接口只有一个方法comparableTo(Object o)
其规则是当前对象与o对象进行比较,返回一个int值,系统根据此值进行排序。
如当前对象&o对象,则返回值&0;
如当前对象=o对象,则返回值=0;
如当前对象&o对象,则返回值&0;
import java.util.*;
class User implements Comparable&User&
public String getName() {
public void setName(String name) {
this.name =
public Integer getOrder() {
public void setOrder(Integer order) {
this.order =
public int compareTo(User arg0) {
return this.getOrder().compareTo(arg0.getOrder());
public class Test{
public static void main(String[] args) {
User user1 = new User();
user1.setName("zhangsan");
user1.setOrder(10);
User user2 = new User();
user2.setName("lisi");
user2.setOrder(6);
User user3 = new User();
user3.setName("wangwu");
user3.setOrder(11);
User user4 = new User();
user4.setName("zhaoqi");
user4.setOrder(2);
List&User& list = new ArrayList&User&();
list.add(user1);
list.add(user2);
list.add(user3);
list.add(user4);
Collections.sort(list);
for(User u : list){
System.out.println(u.getName());
第二种方式,java.util下有一个Comparator(比较器)。它拥有compare( )方法,用来比较两个对象。
import java.util.*;
class User { //此处无需实现Comparable接口
public User(){};
public String getName() {
public void setName(String name) {
this.name =
public Integer getOrder() {
public void setOrder(Integer order) {
this.order =
public class Test2{
public static void main(String[] args) {
User user1 = new User();
user1.setName("zhangsan");
user1.setOrder(10);
User user2 = new User();
user2.setName("lisi");
user2.setOrder(6);
User user3 = new User();
user3.setName("wangwu");
user3.setOrder(11);
User user4 = new User();
user4.setName("zhaoqi");
user4.setOrder(2);
List&User&list = new ArrayList&User&();
list.add(user2);
list.add(user1);
list.add(user3);
list.add(user4);
Collections.sort(list,new Comparator&User&(){
public int compare(User arg0, User arg1) {
return arg0.getOrder().compareTo(arg1.getOrder());
for(User u : list){
System.out.println(u.getName());
前者代码结构简单,但是只能根据固定的属性排序,后者灵活,可以临时指定排序项,但是代码不够简洁。
多字段比较:
Collections.sort(list,new Comparator &user&(){
public int compare(User arg0, User arg1) {
第一次比较专业
int i = arg0.getOrder().compareTo(arg1.getOrder());
如果专业相同则进行第二次比较
第二次比较学制
int j=arg0.getXXX().compareTo(arg1.getXXX());
如果学制相同则返回按年龄排序
return arg0.getCCC().compareTo(arg1.getCCC());
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(117643)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'java中对ArrayList进行排序',
blogAbstract:'java中的ArrayList需要通过collections类的sort方法来进行排序
如果想自定义排序方式则需要有类来实现Comparator接口并重写compare方法
调用sort方法时将ArrayList对象与实现Commparator接口的类的对象作为参数
import java.util.ArrayLimport java.util.Cimport java.util.Cimport java.util.L
public class Test {&public static void main(String[] args) {
&&Student zlj = new Student(\"丁晓宇\", 21);',
blogTag:'arraylist,comparator,collections,java,sort',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:1,
publishTime:6,
permalink:'blog/static/',
commentCount:8,
mainCommentCount:7,
recommendCount:4,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}博客分类:
本文转载其他人
原文链接:
* @author guwh
* @version 创建时间: 上午10:49:36
package com.jabberchina.
import java.util.ArrayL
import java.util.C
import java.util.C
import java.util.L
public class SortTest {
public static void main(String[] args) {
List&String& lists = new ArrayList&String&();
List&A& list = new ArrayList&A&();
List&B& listB = new ArrayList&B&();
lists.add("5");
lists.add("2");
lists.add("9");
//lists中的对象String 本身含有compareTo方法,所以可以直接调用sort方法,按自然顺序排序,即升序排序
Collections.sort(lists);
A aa = new A();
aa.setName("aa");
aa.setOrder(1);
A bb = new A();
bb.setName("bb");
bb.setOrder(2);
list.add(bb);
list.add(aa);
//list中的对象A实现Comparable接口
Collections.sort(list);
B ab = new B();
ab.setName("ab");
ab.setOrder("1");
B ba = new B();
ba.setName("ba");
ba.setOrder("2");
listB.add(ba);
listB.add(ab);
//根据Collections.sort重载方法来实现
Collections.sort(listB,new Comparator&B&(){
public int compare(B b1, B b2) {
return b1.getOrder().compareTo(b2.getOrder());
System.out.println(lists);
System.out.println(list);
System.out.println(listB);
class A implements Comparable&A&{
public String getName() {
public void setName(String name) {
this.name =
public Integer getOrder() {
public void setOrder(Integer order) {
this.order =
public String toString() {
return "name is "+name+" order is "+
public int compareTo(A a) {
return this.order.compareTo(a.getOrder());
public String getName() {
public void setName(String name) {
this.name =
public String getOrder() {
public void setOrder(String order) {
this.order =
public String toString() {
return "name is "+name+" order is "+
打印的结果为:
&[2, 5, 9]
[name is aa order is 1, name is bb order is 2]
[name is ab order is 1, name is ba order is 2]
注:如果:return b1.getOrder().compareTo(b2.getOrder()); 改为 return b2.getOrder().compareTo(b1.getOrder());
那么list中的结果正好相反
浏览: 6301 次
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'}

我要回帖

更多关于 list里的map排序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信