网站首页 > 文章中心 > 其它

设计排序函数python_python定义一个函数从小到大排序

作者:小编 更新时间:2023-09-04 15:05:50 浏览量:369人看过

sorted函数python

sorted函数python介绍如下

设计排序函数python_python定义一个函数从小到大排序-图1

sorted() 作为?Python?内置函数之一,其功能是对序列(列表、元组、字典、集合、还包括字符串)进行排序.

sorted() 函数的基本语法格式如下

list = sorted(iterable, key=None, reverse=False)

其中,iterable 表示指定的序列,key 参数可以自定义排序规则;reverse 参数指定以升序(False,默认)还是降序(True)进行排序.sorted() 函数会返回一个排好序的列表.

注意,key 参数和 reverse 参数是可选参数,即可以使用,也可以忽略.

演示sorted()函数的基本代码用法:

#对列表进行排序

print(sorted(a))

#对元组进行排序

设计排序函数python_python定义一个函数从小到大排序-图2

#字典默认按照key进行排序

print(sorted(a.items()))

#对集合进行排序

#对字符串进行排序

深入理解python中的排序sort

进行一个简单的升序排列直接调用sorted()函数,函数将会返回一个排序后的列表:

sorted函数不会改变原有的list,而是返回一个新的排好序的list

如果你想使用就地排序,也就是改变原list的内容,那么可以使用list.sort()的方法,这个方法的返回值是None.

另一个区别是,list.sort()方法只是list也就是列表类型的方法,只可以在列表类型上调用.而sorted方法则是可以接受任何可迭代对象.

list.sort()和sorted()函数都有一个key参数,可以用来指定一个函数来确定排序的一个优先级.比如,这个例子就是根据大小写的优先级进行排序:

key参数的值应该是一个函数,这个函数接受一个参数然后返回以一个key,这个key就被用作进行排序.这个方法很高效,因为对于每一个输入的记录只需要调用一次key函数.

一个常用的场景就是当我们需要对一个复杂对象的某些属性进行排序时:

再如:

设计排序函数python_python定义一个函数从小到大排序-图3

前面我们看到的利用key-function来自定义排序,同时Python也可以通过operator库来自定义排序,而且通常这种方法更好理解并且效率更高.

operator库提供了 itemgetter(), attrgetter(), and a methodcaller()三个函数

同时还支持多层排序

list.sort()和sorted()都有一个boolean类型的reverse参数,可以用来指定升序和降序排列,默认为false,也就是升序排序,如果需要降序排列,则需将reverse参数指定为true.

排序的稳定性指,有相同key值的多个记录进行排序之后,原始的前后关系保持不变

我们可以看到python中的排序是稳定的.

我们可以利用这个稳定的特性来进行一些复杂的排序步骤,比如,我们将学生的数据先按成绩降序然后年龄升序.当排序是稳定的时候,我们可以先将年龄升序,再将成绩降序会得到相同的结果.

传统的DSU(Decorate-Sort-Undecorate)的排序方法主要有三个步骤:

因为元组是按字典序比较的,比较完grade之后,会继续比较i.

添加index的i值不是必须的,但是添加i值有以下好处:

cmp参数的使用方法就是指定一个函数,自定义排序的规则,和java等其他语言很类似

也可以反序排列

python 内置排序函数使用

python内置关于排序的工具主要有两个一个是列表自带的 sort() 方法,另外一个是 sorted() 函数.Python 列表内置方法可以直接修改列表.而 sorted() 内置函数从一个可迭代对象(列表,元组等都可以)构建一个新的排序列表.其函数原型分别如下:

对列表进行默认排序

从函数原型来看,可以看到两者都具有两个可选参数,它们都必须指定为关键字参数.

key 指定带有单个参数的函数,用于从 iterable 的每个元素中提取用于比较的键 (例如 key=str.lower).默认值为 None (直接比较元素). key 形参的值应该是个函数(或其他可调用对象),它接受一个参数并返回一个用于排序的键.

假设有其他类型的变量,比如一个自定义的类或者列表中又是一个列表.以官网例子为例有这样一个列表,其元素为元组,

可以用以下方式按照年龄排序

类似的有自定义类

可以用如下方式进行排序

也可以显示定义一个函数,且只有一个参数,返回用于排序的键,比如

都说到这里了大家应该明白就是定义一个函数返回一个用于排序的键,可以用lambda函数或者 def 定义都可以.

上面实现的简单函数实际就是实现了返回一个有序结构的第 n 的元素,或者某个类中的某个属性,所以呢 Python 提供了便利功能,使访问器功能更容易,更快捷.operator 模块有 itemgetter() 、 attrgetter() 函数.分别完成返回第 n 个元素,某个属性功能.上面的排序可以用如下方式进行实现

这种作用先定义如何比较两个变量,以上面的学生列表按照年龄排序为例

这种做法自定义比较函数接收两个形参,返回比较结果(bool),而新式方法接受一个参数,返回的是比较的键.

怎样用python将数组里的数从高到低排序

①.、首先我们定义一个列表输入一串大小不一的数字.

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章