python教程对函数中的参数进行排序
内建的 sorted() 函数可接受一个用来传递可调用对象( callable ) 的参数 key,而该可调用对象会返回待排序对象中的某些值,sorted则利用这些值来比较对象。
例如,如果应用中有一系列的 User 对象实例,而我们想通过 user_id 属性来对他们排序,则可以提供一个可调用对象将 User 实例作为输入然后返回 user_id。
class User: def __init__(self, user_id): self.user_id = user_id def __repr__(self): return 'User({})'.format(self.user_id) users = [User(23), User(3), User(99)] print(users) # [User(23), User(3), User(99)] sorted(users, key=lambda u: user_id) # [User(3), User(23), User(99)]
除了可以用 lambda 表达式外,另一种方式是使用 operator.attrgetter()
from operator import attrgetter sorted(users, key=attrgetter('user_id')) # [User(3), User(23), User(99)]
要使用 lambda 表达式还是 attrgetter() 或许只是一种个人喜好。但是通常来说,attrgetter() 要更快一些,而且允许同时提取多个字段值的能力。
这和针对字典的 operator.itemgetter() 的使用很类似。
如果 User 实例还有一个 first_name 和 last_name 属性的话,可以执行如下的排序操作:
by_name = sorted(users, key=attrgetter('last_name', 'first_name'))
同样,本节所用到的技术也使用于像 min() 和 max() 这样的函数。
min(Users, key=attrgetter('user_id')) # User(3) max(Users, key=attrgetter('user_id')) # User(99)
以上就是python教程对函数中的参数进行排序的详细内容,更多关于Python参数排序的资料请关注我们其它相关文章!
相关推荐
-
在Python中使用sort()方法进行排序的简单教程
sort()方法排序列表中的对象,比较使用func(如果给定). 语法 以下是sort()方法的语法: list.sort([func]) 参数 func -- 这是一个可选参数,如果有将使用该函数,对列表中的对象进行排序 返回值 此方法不返回任何值,但是从列表中给定的对象进行排序 例子 下面的例子显示了sort()方法的使用 #!/usr/bin/python aList = [123, 'xyz', 'zara', 'abc', 'xyz']; aList.sort(); print "Li
-
Python中利用sorted()函数排序的简单教程
排序算法 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来.通常规定,对于两个元素x和y,如果认为x < y,则返回-1,如果认为x == y,则返回0,如果认为x > y,则返回1,这样,排序算法就不用关心具体的比较过程,而是根据比较结果直接排序. Python内置的sorted()函数就可以对list进行排序:
-
python中对数据进行各种排序的方法
Python列表具有内置的 list.sort()方法,可以在原地修改列表. 还有一个 sorted()内置的函数从迭代构建一个新的排序列表.在本文中,我们将探讨使用Python排序数据的各种技术. 请注意,sort()原始数据被破坏,sorted()没有对原始数据进行操作,而是新建了一个新数据. 一.基本的排序 最基本的排序很简单.只要使用sorted()函数即可返回一个 新的排序的列表 >>>sorted([5, 2, 3, 1, 4]) [1, 2, 3, 4, 5] 咱们也可以使
-
Python函数参数类型及排序原理总结
这篇文章主要介绍了Python函数参数类型及排序原理总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Python中函数的参数问题有点复杂,主要是因为参数类型问题导致的情况比较多,下面来分析一下. 参数类型:缺省参数,关键字参数,不定长位置参数,不定长关键字参数. 其实总共可以分为 位置参数和关键字参数,因为位置参数被放在list里面,关键字参数放在dict里面,Python在解读的时候首先处理list,没有遇到关键字就append到list
-
python使用sorted函数对列表进行排序的方法
本文实例讲述了python使用sorted函数对列表进行排序的方法.分享给大家供大家参考.具体如下: python提供了sorted函数用于对列表进行排序,并且可以按照正序或者倒序进行排列 #创建一个数字组成的列表 numbers = [5, 1, 4, 3, 2, 6, 7, 9] #输出排序后的数字数组 print sorted(numbers) #输出原始数组,并未被改变 print numbers my_string = ['aa', 'BB', 'zz', 'CC', 'dd', "E
-
python教程对函数中的参数进行排序
内建的 sorted() 函数可接受一个用来传递可调用对象( callable ) 的参数 key,而该可调用对象会返回待排序对象中的某些值,sorted则利用这些值来比较对象. 例如,如果应用中有一系列的 User 对象实例,而我们想通过 user_id 属性来对他们排序,则可以提供一个可调用对象将 User 实例作为输入然后返回 user_id. class User: def __init__(self, user_id): self.user_id = user_id def __rep
-
python 函数中的参数类型
1.前言 Python中函数的参数类型比较丰富,比如我们经常见到*args和**kwargs作为参数.初学者遇到这个多少都有点懵逼,今天我们来把Python中的函数参数进行分析和总结. 2.Python 中的函数参数 在Python中定义函数参数有5种类型,我们来一一演示它们. 2.1必选参数 必须参数是最基本的参数类型,当你在Python函数中定义一个必选参数时,每次调用都必须给予赋值,否则将报错. >>>def fun(a): print("a=",a) >
-
python requests包的request()函数中的参数-params和data的区别介绍
如下所示: import requests url='http://www.baidu.com' #下面使用requests.request(method, url, **kwargs) re=requests.request('GET',url) 经验证,可用. 我们试着传入一个字典,首先用params参数. 结果为: 亮点在url和args. 我们还用get方法,把dic这个字典传给data试试看. 亮点还是在args和url.惊喜地发现,dic这个字典没传进去. 这是因为: params是
-
python open函数中newline参数实例详解
目录 问题的由来 具体实例 总结 问题的由来 我在读pythoncsv模块文档 看到了这样一句话 如果 csvfile 是文件对象,则打开它时应使用 newline=‘’.其备注:如果没有指定 newline=‘’,则嵌入引号中的换行符将无法正确解析,并且在写入时,使用 \r\n 换行的平台会有多余的 \r 写入.由于 csv 模块会执行自己的(通用)换行符处理,因此指定 newline=‘’ 应该总是安全的. 我就在思考open函数中的newline参数的作用,因为自己之前在使用open函数时
-
python类和函数中使用静态变量的方法
本文实例讲述了python类和函数中使用静态变量的方法.分享给大家供大家参考.具体分析如下: 在python的类和函数(包括λ方法)中使用静态变量似乎是件不可能[Nothing is impossible]的事, 但总有解决的办法,下面通过实现一个类或函数的累加器来介绍一些较为非主流的方法 方法一.通过类的__init__和__call__方法 class foo: def __init__(self, n=0): self.n = n def __call__(self, i): self.n
-
Kotlin学习教程之函数的默认参数
前言 在Java中,为函数的参数添加默认值是不被允许的,这是为了防止默认参数与函数重载同时使用时二义性的问题,考虑下面的例子: void func(p1: String, p2: String, p3: String = "default") { // do something } void func(String p1, String p2) { // do something } 假设上面的代码是可以编译通过的,那么当调用func("p1","p2
-
python在回调函数中获取返回值的方法
python中有用到回调函数的时候,而回调函数又需要返回数值的时候,就需要先将所被传为回调函数的函数先赋值给一个变量,然后等回调结束之后,将这个变量取值回来就可以了. 如我用到到的调用xmlreader时,传入的一个函数需要取回返回值的代码: # 创建一个 XMLReader parser = xml.sax.make_parser() # turn off namepsaces parser.setFeature(xml.sax.handler.feature_namespaces, 0) #
-
React.memo函数中的参数示例详解
目录 React.memo?这是个啥? React.memo的第一个参数 父组件 子组件 React.memo优化 React.memo的第二个参数 父组件 子组件 React.memo优化 父组件 子组件 小结 React.memo?这是个啥? 按照官方文档的解释: 如果你的函数组件在给定相同 props 的情况下渲染相同的结果,那么你可以通过将其包装在 React.memo 中调用,以此通过记忆组件渲染结果的方式来提高组件的性能表现.这意味着在这种情况下,React 将跳过渲染组件的操作并直
-
Vue在自定义指令绑定的处理函数中传递参数
目录 在自定义指令绑定的处理函数中传递参数 需求背景 方式一:包装函数 方式二:利用动态参数 在自定义指令中的传递参数时value和expression的区别 注意点 总结 在自定义指令绑定的处理函数中传递参数 需求背景 现在需要为自定义指令绑定函数,并且需要向函数中传递参数,类似 v-on="handleFunc(arg1, arg2)". Vue 的指令预期得到的值是一个 JavaScript 表达式,除了 v-on 和 v-for 这两个特殊指令外,其他的指令会自动计算该表达式的
-
Python编程对列表中字典元素进行排序的方法详解
本文实例讲述了Python编程对列表中字典元素进行排序的方法.分享给大家供大家参考,具体如下: 内容目录: 1. 问题起源 2. 对列表中的字典元素排序 3. 对json进行比较(忽略列表中字典的顺序) 一.问题起源 json对象a,b a = '{"ROAD": [{"id": 123}, {"name": "no1"}]}' b = '{"ROAD": [{"name": "
随机推荐
- Go语言共享内存读写实例分析
- Java设计模块系列之书店管理系统单机版(一)
- python实现在windows服务中新建进程的方法
- 使用Python的Twisted框架实现一个简单的服务器
- mac环境中使用brew安装php5.5.15
- 深入解析半同步与异步的MySQL主从复制配置
- php学习之数据类型之间的转换代码
- PHP实现根据图片色界在不同位置加水印的方法
- ASP.NET Cookie 操作实现
- css white-space:nowrap属性用法(可以强制文字不换行输出)
- jquery 手势密码插件
- android实现简单的画画板实例代码
- 一个网站的计划书的写作方法
- ActiveMQ简单入门(新手必看篇)
- PHP开发需要注意的安全问题
- Oracle 常见问题解答
- 基于getline()函数的深入理解
- C语言中fgetgrent()函数和fgetpwent()函数的用法对比
- go语言基础语法示例
- 基于MVC5中的Model层开发数据注解