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

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

1.pyhton断言

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

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

2.list 复杂排序

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免费学习笔记(深入)”;

Python实例:

>>> 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实例:

>>> 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:正向排序

>>>L = [2,3,1,4]  >>>L.sort()  >>>L  >>>[1,2,3,4]

登录后复制

实例2:反向排序

>>>L = [2,3,1,4]  >>>L.sort(reverse=True)  >>>L  >>>[4,3,2,1]

登录后复制

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

>>>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: 对第二个关键字排序

>>>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: 对第二个关键字排序

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

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

通过实验比较,方法3比方法6要慢,方法6比方法4要慢,方法4和方法5基本相当

多关键字比较排序:

实例7:

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

>>> 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 实用函数进阶(更新中) 的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2264188.html

(0)
上一篇 2025年2月27日 08:02:48
下一篇 2025年2月24日 09:24:03

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Python面向对象之类和实例

    本篇文章给大家分享的内容是关于Python面向对象之类和实例,有着一定的参考价值,有需要的朋友可以参考一下 类和实例 面向对象最重要的概念就是类(class)和实例(instance),必须牢记类是抽象的模板,比如student类,而实例是…

    编程技术 2025年2月27日
    100
  • Python面向对象之继承和多态

    本篇文章给大家分享的内容是关于Python面向对象之继承和多态,有着一定的参考价值,有需要的朋友可以参考一下 在oop程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(subclass),而…

    2025年2月27日
    200
  • 关于Python闭包机制的深入理解

    本文以Python为例,深入浅出讲解闭包;根据百度百科的解释,闭包就是能够读取其他函数内部变量的函数,例如在JavaScript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成『定义在一个函数内部的函数』;在本质上,闭包是将函数…

    2025年2月27日 编程技术
    200
  • Python面向对象之获取对象信息

    本篇文章给大家分享的内容是关于Python面向对象之获取对象信息,有着一定的参考价值,有需要的朋友可以参考一下 当我们拿到一个对象的引用时,如何知道这个对象是什么类型、有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type…

    编程技术 2025年2月27日
    200
  • Python面向对象之实例属性和类属性

    本篇文章给大家分享的内容是关于Python面向对象之实例属性和类属性 ,有着一定的参考价值,有需要的朋友可以参考一下 由于python是动态语言,根据类创建实例可以任意绑定属性。 给实例绑定属性的方法是通过实例变量,或者通过self变量: …

    编程技术 2025年2月27日
    200
  • 如何在python环境下操作excel

    本篇文章给大家分享的内容是如何在python环境下操作excel ,有着一定的参考价值,有需要的朋友可以参考一下 一、可使用的第三方库 python中处理excel表格,常用的库有xlrd(读excel)表、xlwt(写excel)表、op…

    编程技术 2025年2月27日
    200
  • 三种常用的python中文分词工具

    本篇文章给大家分享的内容是三种常用的python中文分词工具,有着一定的参考价值,有需要的朋友可以参考一下 这三种分词工具,在这里分享下~ 1.jieba 分词: # -*- coding: UTF-8 -*-import osimport…

    编程技术 2025年2月27日
    200
  • 深入了解python中的协程函数

    本篇文章给大家分享的内容是深入了解python中的协程函数 ,有着一定的参考价值,有需要的朋友可以参考一下 概念: 根据维基百科给出的定义,“协程 是为非抢占式多任务产生子程序的计算机程序组件,协程允许不同入口点在不同位置暂停或开始执行程序…

    编程技术 2025年2月27日
    200
  • 深入了解python中的time模块

    本篇文章给大家分享的内容是深入了解python中的time模块 ,有着一定的参考价值,有需要的朋友可以参考一下 在Python中,与时间处理有关的模块就包括:time,datetime以及calendar。这篇文章,主要讲解time模块。 …

    2025年2月27日
    200
  • 深入了解python中的os模块

    本篇文章给大家分享的内容是深入了解python中的os模块 ,有着一定的参考价值,有需要的朋友可以参考一下 在自动化测试中,经常需要查找操作文件,比如说查找配置文件(从而读取配置文件的信息),查找测试报告(从而发送测试报告邮件),经常要对大…

    2025年2月27日
    200

发表回复

登录后才能评论