sunrise
每天不断学习,才能不断提升自己。
C++博客
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
64 随笔 :: 0 文章 :: 92 评论 :: 0 Trackbacks
<
2012年4月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
31
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
1
2
3
4
5
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(12)
给我留言
查看公开留言
查看私人留言
随笔分类
(63)
C/C++学习(1)
(rss)
linux开发(11)
(rss)
python解决方案(4)
(rss)
python小技巧(1)
(rss)
边学边译(1)
(rss)
机器算法(1)
(rss)
可爱的python(22)
(rss)
面试题收集
(rss)
前端设计(1)
(rss)
人工智能(2)
(rss)
设计模式(1)
(rss)
数据结构(4)
(rss)
心情随笔(1)
(rss)
学习心得(5)
(rss)
自然语言处理(8)
(rss)
随笔档案
(64)
2013年4月 (1)
2013年3月 (3)
2013年2月 (2)
2013年1月 (7)
2012年12月 (7)
2012年10月 (2)
2012年9月 (4)
2012年8月 (7)
2012年7月 (5)
2012年6月 (6)
2012年5月 (5)
2012年4月 (5)
2012年3月 (10)
收藏夹
mysql
(rss)
python
(rss)
技术类
(rss)
ACMer
acmol
C小加
获哥
飒飒
小马甲
技术联盟
C/C++
C++教程网
我爱公开课
可爱的python
python教程
python俱乐部
python源码剖析
可爱的python
数据挖掘
董的博客
算法之道
友情链接
iTech
从波
老邓
黎明
最新随笔
1. 解决MySQL 1366 Incorrect string value
2. jQuery插件QuickPaginate快速分页实现
3. turbogear2上传文件功能
4. 关于PIL库的一些概念
5. UnicodeDecodeError: 'utf8' codec can't decode bytes in position 18-19: unexpected end of data
6. access violation at address 解决之法
7. python的默认参数
8. Google Translate API
9. json的编码和解析
10. 解决UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3问题
搜索
积分与排名
积分 - 236144
排名 - 106
最新随笔
1. 解决MySQL 1366 Incorrect string value
2. jQuery插件QuickPaginate快速分页实现
3. turbogear2上传文件功能
4. 关于PIL库的一些概念
5. UnicodeDecodeError: 'utf8' codec can't decode bytes in position 18-19: unexpected end of data
6. access violation at address 解决之法
7. python的默认参数
8. Google Translate API
9. json的编码和解析
10. 解决UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3问题
最新评论
1. re: SVM算法入门
很好的文章,基本上理解了SVM。谢谢
--郑郁正
2. re: SVM算法入门
点个赞!通俗易懂!
--超级保镖
3. re: SVM算法入门[未登录]
第一次接触SVM,花了不少时间看完文章(博主也是不容易呀!)。虽然部分细节没搞懂,但是大体了解了SVM。感谢博主的分享,写得很棒哈!!
--li
4. re: SVM算法入门
还没看完,但是觉得写的很棒,谢谢分享!
--yangming
5. re: SVM算法入门
真心写的不错,非常详细。
--syfly2014
阅读排行榜
1. SVM算法入门(46978)
2. linux下.run文件的安装与卸载(15081)
3. linux如何查进程、杀进程,重启进程 (10885)
4. UnicodeDecodeError: 'utf8' codec can't decode bytes in position 18-19: unexpected end of data(9856)
5. 解决MySQL 1366 Incorrect string value(9445)
评论排行榜
1. SVM算法入门(39)
2. 转:女程共勉:必须证明自己是真正的优秀(17)
3. (转)职场警示:20不努力,30做助理(6)
4. python中的专用类方法(4)
5. 《数学之美》--马尔可夫链(4)
python学习(二)--- python列表排序
python列表排序
留着用的时候查查 转自:
http://gaopenghigh.iteye.com/blog/1483864
简单记一下python中List的sort方法(或者sorted内建函数)的用法。
关键字:
python列表排序 python字典排序 sorted
List的元素可以是各种东西,字符串,字典,自己定义的类等。
sorted函数用法如下:
Python代码
sorted(data, cmp=None, key=None, reverse=False)
其中,data是待排序数据,可以使List或者iterator, cmp和key都是函数,这两个函数作用与data的元素上产生一个结果,sorted方法根据这个结果来排序。
cmp(e1, e2) 是带两个参数的比较函数, 返回值: 负数: e1 < e2, 0: e1 == e2, 正数: e1 > e2. 默认为 None, 即用内建的比较函数.
key 是带一个参数的函数, 用来为每个元素提取比较值. 默认为 None, 即直接比较每个元素.
通常, key 和 reverse 比 cmp 快很多, 因为对每个元素它们只处理一次; 而 cmp 会处理多次.
通过例子来说明sorted的用法:
1. 对由tuple组成的List排序
Python代码
>>> students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10),]
用key函数排序(lambda的用法见 注释1)
Python代码
>>> sorted(students, key=
lambda
student : student[2]) # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
用cmp函数排序
Python代码
>>> sorted(students, cmp=
lambda
x,y : cmp(x[2], y[2])) # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
用 operator 函数来加快速度, 上面排序等价于:(itemgetter的用法见 注释2)
Python代码
>>>
from
operator
import
itemgetter, attrgetter
>>> sorted(students, key=itemgetter(2))
用 operator 函数进行多级排序
Python代码
>>> sorted(students, key=itemgetter(1,2)) # sort by grade then by age
[('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]
2. 对由字典排序
Python代码
>>> d = {'data1':3, 'data2':1, 'data3':2, 'data4':4}
>>> sorted(d.iteritems(), key=itemgetter(1), reverse=True)
[('data4', 4), ('data1', 3), ('data3', 2), ('data2', 1)]
注释1
参考:http://jasonwu.me/2011/10/29/introduce-to-python-lambda.html
注释2
参考:http://ar.newsmth.net/thread-90745710c90cf1.html
class itemgetter(__builtin__.object)
| itemgetter(item, ...) --> itemgetter object
|
| Return a callable object that fetches the given item(s) from its operand.
| After, f=itemgetter(2), the call f(r) returns r[2].
| After, g=itemgetter(2,5,3), the call g(r) returns (r[2], r[5], r[3])
相当于
Python代码
def
itemgetter(i,*a):
def
func(obj):
r = obj[i]
if
a:
r = (r,) + tuple(obj[i]
for
i
in
a)
return
r
return
func
>>> a = [1,2,3]
>>> b=operator.itemgetter(1)
>>> b(a)
2
>>> b=operator.itemgetter(1,0)
>>> b(a)
(2, 1)
>>> b=itemgetter(1)
>>> b(a)
2
>>> b=itemgetter(1,0)
>>> b(a)
(2, 1)
参考资料:
1. http://www.linuxso.com/linuxbiancheng/13340.html
2. http://www.douban.com/note/13460891/
posted on 2012-04-27 11:28
SunRise_at
阅读(5513)
评论(2)
编辑
收藏
引用
所属分类:
可爱的python
评论
#
re: python学习(二)--- python列表排序
2012-04-27 11:38
老鱼
提示:python 3.x已经废弃了cmp参数。
回复
更多评论
#
re: python学习(二)--- python列表排序
2012-04-27 11:43
SunRise_at
这个我也不清楚,今儿就用到了第一个,我说留着用的时候再查呢。。。@老鱼
回复
更多评论
刷新评论列表
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
turbogear2上传文件功能
关于PIL库的一些概念
python的默认参数
Google Translate API
json的编码和解析
python多线程
python编码转换
Python yield 用法
python enumerate用法
python之Queue
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Powered by:
C++博客
Copyright © SunRise_at