python 实用函数进阶(更新中)


本文摘自php中文网,作者不言,侵删。

本篇文章分享的内容是python 实用函数进阶,现在分享给大家,有需要的朋友可以参考一下本篇文章的内容

1.pyhton断言


如何为assert断言语句添加异常参数
assert的异常参数,其实就是在断言表达式后添加字符串信息,用来解释断言并更好的知道是哪里出了问题。格式如下:
assert expression [, arguments]
assert 表达式 [, 参数]

assert len(lists) >=5,’列表元素个数小于5’
assert 2==1,’2不等于1’

2.list 复杂排序

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

data_list = [] 

data_list.append({'softname':'1','version':'1.2.2.2'}) 

data_list.append({'softname':'7','version':'1.2.2.2'}) 

data_list.append({'softname':'5','version':'1.2.2.2'}) 

data_list.append({'softname':'2','version':'1.2.2.2'}) 

data_list.append({'softname':'3','version':'1.2.2.2'}) 

data_list.append({'softname':'9','version':'1.2.2.2'}) 

#升序 

data_list.sort(key=lambda obj:obj.get('softname'), reverse=False) 

 

print data_list 

#[{'softname': '1'}, {'softname': '2'}, {'softname': '3'}, {'softname': '5'}, {'softname': '7'}, {'softname': '9'}] 

#降序 

data_list.sort(key=lambda obj:obj.get('softname'), reverse=True) 

print data_list 

#[{'softname': '9'}, {'softname': '7'}, {'softname': '5'}, {'softname': '3'}, {'softname': '2'}, {'softname': '1’}]

对List进行排序,Python提供了两个方法

方法1.用List的内建函数list.sort进行排序

list.sort(func=None, key=None, reverse=False)

Python实例:

1

2

3

4

>>> list = [2,5,8,9,3]   

>>> list    [2,5,8,9,3]   

>>> list.sort()   

>>> list    [2, 3, 5, 8, 9]

方法2.用序列类型函数sorted(list)进行排序(从2.4开始)

Python实例:

1

2

3

4

>>> list = [2,5,8,9,3]   

>>> list    [2,5,8,9,3]   

>>> sorted(list)  

[2, 3, 5, 8, 9]

两种方法的区别:
sorted(list)返回一个对象,可以用作表达式。原来的list不变,生成一个新的排好序的list对象。
list.sort() 不会返回对象,改变原有的list。
其他sort的实例:
实例1:正向排序

1

2

3

4

>>>L = [2,3,1,4] 

>>>L.sort() 

>>>L 

>>>[1,2,3,4]

实例2:反向排序

1

2

3

4

>>>L = [2,3,1,4] 

>>>L.sort(reverse=True) 

>>>L 

>>>[4,3,2,1]

实例3:对第二个关键字排序

1

2

3

4

>>>L = [('b',6),('a',1),('c',3),('d',4)]  

>>>L.sort(lambda x,y:cmp(x[1],y[1]))  

>>>L 

>>>[('a', 1), ('c', 3), ('d', 4), ('b', 6)]

实例4: 对第二个关键字排序

1

2

3

4

>>>L = [('b',6),('a',1),('c',3),('d',4)] 

>>>L.sort(key=lambda x:x[1]) 

>>>L 

>>>[('a', 1), ('c', 3), ('d', 4), ('b', 6)]

实例5: 对第二个关键字排序

1

2

3

4

>>>L = [('b',2),('a',1),('c',3),('d',4)] 

>>>import operator  >>>L.sort(key=operator.itemgetter(1))  

>>>L 

>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]

实例6:(DSU方法:Decorate-Sort-Undercorate)

1

2

3

4

5

>>>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]

>>>L 

>>>[('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:

1

2

3

4

>>>L = [('d',2),('a',4),('b',3),('c',2)] 

>>> L.sort(key=lambda x:x[1]) 

>>> L 

>>>[('d', 2), ('c', 2), ('b', 3), ('a', 4)]

我们看到,此时排序过的L是仅仅按照第二个关键字来排的,

如果我们想用第二个关键字排过序后再用第一个关键字进行排序呢?有两种方法

实例8:

1

2

3

4

>>> L = [('d',2),('a',4),('b',3),('c',2)] 

>>> L.sort(key=lambda x:(x[1],x[0])) 

>>> L 

>>>[('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))  
>>> L  
>>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)]  

#实例8能够工作呢?原因在于tuple是的比较从左到右比较的,比较完第一个,如果相等,比较第二个

相关推荐:

关于Python函数的深度解剖

详解python函数之map,Filter,Reduce

以上就是python 实用函数进阶(更新中) 的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

Python如何批量处理excel数据?

看看 Python django开发 异常及解决办法

Python实现连接phoenix的实例

实例解析Python单元测试及unittest框架用法

Python全栈要学什么

Python中swapcase是什么意思

Python怎么删除字符

Python中rjust是什么意思

Python中关于复数属性以及方法运算的示例

Python中的单引号双引号有什么区别

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...