精华内容
下载资源
问答
  • python自定义排序函数
    千次阅读
    2021-01-14 02:22:35

    Python内置的 sorted()函数可对list进行排序:

    >>> sorted([36, 5, 12, 9, 21])

    [5, 9, 12, 21, 36]

    可以看到,sorted()函数,默认是由小到大排序列表的元素。

    >>> score = [('Alice', 72), ('Candy', 90), ('Bob', 62)]

    >>> sorted(score)

    [('Alice', 72), ('Bob', 62), ('Candy', 90)]

    当list的每一个元素又是一个容器时,则会以第一个元素来排序,比如在score中,每个元素都是包含名字和成绩的一个tuple,sorted()函数则按名字首字母进行了排序并返回。

    对于上述排序成绩的情况,默认是按照第一个名字进行排序的,有没有办法让sorted()函数按照成绩来进行排序呢?

    如果需要按照成绩高低进行排序,需要指定排序的字段是成绩,sorted接受key参数,用来指定排序的字段,key的值是一个函数,接受待排序列表的元素作为参数,并返回对应需要排序的字段。因此,sorted()函数也是高阶函数。

    def k(item):

    return item[1] # ==> 按成绩排序,成绩是第二个字段

    sorted(score, key=k)

    得到结果:[('Bob', 62), ('Alice', 72), ('Candy', 90)] 。

    如果需要倒序,指定reverse参数即可。

    sorted(score, key=k, reverse=True)

    得到结果:[('Candy', 90), ('Alice', 72), ('Bob', 62)] 。

    更多相关内容
  • python自定义排序函数

    2019-10-01 20:49:48
    Python内置的sorted()函数可对list进行...但sorted()也是一个高阶函数,它可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比较的元素 x, y,如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排...

    Python内置的 sorted()函数可对list进行排序:

    >>>sorted([36, 5, 12, 9, 21])
    
    [5, 9, 12, 21, 36]
    

    但 sorted()也是一个高阶函数,它可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比较的元素 x, y,如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。

    因此,如果我们要实现倒序排序,只需要编写一个reversed_cmp函数:

    def reversed_cmp(x, y):
        if x > y:
            return -1
        if x < y:
            return 1
        return 0
    

    这样,调用 sorted() 并传入 reversed_cmp 就可以实现倒序排序:

    >>> sorted([36, 5, 12, 9, 21], reversed_cmp)
    [36, 21, 12, 9, 5]
    

    sorted()也可以对字符串进行排序,字符串默认按照ASCII大小来比较:

    >>> sorted(['bob', 'about', 'Zoo', 'Credit'])
    ['Credit', 'Zoo', 'about', 'bob']
    

    'Zoo'排在'about'之前是因为'Z'的ASCII码比'a'小。

     

    转载于:https://www.cnblogs.com/XXCXY/p/5181506.html

    展开全文
  • Python自定义排序函数

    千次阅读 2021-07-18 18:03:35
    python 自定义排序函数 自定义排序函数 Python内置的 sorted()函数可对list进行排序: >>>sorted([36, 5, 12, 9, 21]) [5, 9, 12, 21, 36] 但 sorted()也是一个高阶函数,它可以接收一个比较函数来...

    目录

    自定义排序函数

    实现忽略大小写排序的算法

    剑指 Offer 45. 把数组排成最小的数


    python 自定义排序函数

    自定义排序函数

    Python内置的 sorted()函数可对list进行排序:

    >>>sorted([36, 5, 12, 9, 21])
    [5, 9, 12, 21, 36]

    但 sorted()也是一个高阶函数,它可以接收一个比较函数来实现自定义排序,

    比较函数的定义是,传入两个待比较的元素 x, y,如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 x 和 y 相等,返回 0。

    因此,如果我们要实现倒序排序,只需要编写一个reversed_cmp函数:

    def reversed_cmp(x, y):
        if x > y:
            return -1
        if x < y:
            return 1
        return 0

    这样,调用 sorted() 并传入 reversed_cmp 就可以实现倒序排序:

    >>> sorted([36, 5, 12, 9, 21], reversed_cmp)
    [36, 21, 12, 9, 5]

    sorted()也可以对字符串进行排序,字符串默认按照ASCII大小来比较:

    >>> sorted(['bob', 'about', 'Zoo', 'Credit'])
    ['Credit', 'Zoo', 'about', 'bob']
    'Zoo'排在'about'之前是因为'Z'的ASCII码比'a'小

    实现忽略大小写排序的算法

    对字符串排序时,有时候忽略大小写排序更符合习惯。请利用sorted()高阶函数,实现忽略大小写排序的算法。

    输入:['bob', 'about', 'Zoo', 'Credit']
    输出:['about', 'bob', 'Credit', 'Zoo']

    def cmp_ignore_case(s1, s2):
        t1=s1.lower();
        t2=s2.lower();
        if(t1>t2):
            return 1
        if(t1==t2):
            return 0
        return -1
    
    print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)

    剑指 Offer 45. 把数组排成最小的数

    输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。

    输入: [3,30,34,5,9]
    输出: "3033459"
    class Solution:
        """
        若拼接字符串 x+y>y+x ,则 x “大于” y ;
        反之,若 x+y<y+x ,则 x “小于” y ;
        """
        def sort_rule(self,x,y):
            a, b = x+y, y+x
            if a>b: return 1
            elif a<b:return -1
            else:
                return 0
    
        def minNumber(self, nums: List[int]) -> str:
            strs = [str(num) for num in nums]
            strs.sort(key=functools.cmp_to_key(self.sort_rule))
            return ''.join(strs)

    https://leetcode-cn.com/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/solution/mian-shi-ti-45-ba-shu-zu-pai-cheng-zui-xiao-de-s-4/

    展开全文
  • Python自定义排序

    2020-12-04 11:13:22
    比如自定义了一个class,并且实例化了这个类的...第二种是在sorted( )函数中为key指定一个lambda函数,lambda函数用来排序。举例(这里都是降序排序,所以指定了reserved=True,可以忽略):第一种方法:class BBox(o...

    比如自定义了一个class,并且实例化了这个类的很多个实例,并且组成一个数组。这个数组要排序,是通过这个class的某个字段来排序的。怎么排序呢?

    有两种做法:

    第一种是定义__cmp__( )方法;

    第二种是在sorted( )函数中为key指定一个lambda函数,lambda函数用来排序。

    举例(这里都是降序排序,所以指定了reserved=True,可以忽略):

    第一种方法:

    class BBox(object):

    def __init__(self, name, score, x1, y1, x2, y2):

    self.name = name

    self.score = score

    self.x1 = x1

    self.y1 = y1

    self.x2 = x2

    self.y2 = y2

    def __str__(self):

    ret_str = 'name:{:s}, score:{:f}, x1={:d},y1={:d},x2={:d},y2={:d}'.format(

    self.name, self.score, self.x1, self.y1, self.x2, self.y2

    )

    return ret_str

    def __cmp__(self, other):

    return cmp(self.score, other.score)

    det test():

    x1 = 1

    y1 = 3

    x2 = 6

    y2 = 9

    b1 = BBox('box1', 0.5, x1, y1, x2, y2)

    b2 = BBox('box2', 0.7, x1, y1, x2, y2)

    b3 = BBox('box3', 0.3, x1, y1, x2, y2)

    box_lst = [b1, b2, b3]

    box_lst = sorted(box_lst, reverse=True)

    for box in box_lst:

    print(box)

    第二种方法:

    class BBox(object):

    def __init__(self, name, score, x1, y1, x2, y2):

    self.name = name

    self.score = score

    self.x1 = x1

    self.y1 = y1

    self.x2 = x2

    self.y2 = y2

    def __str__(self):

    ret_str = 'name:{:s}, score:{:f}, x1={:d},y1={:d},x2={:d},y2={:d}'.format(

    self.name, self.score, self.x1, self.y1, self.x2, self.y2

    )

    return ret_str

    det test():

    x1 = 1

    y1 = 3

    x2 = 6

    y2 = 9

    b1 = BBox('box1', 0.5, x1, y1, x2, y2)

    b2 = BBox('box2', 0.7, x1, y1, x2, y2)

    b3 = BBox('box3', 0.3, x1, y1, x2, y2)

    box_lst = [b1, b2, b3]

    box_lst = sorted(box_lst, key=lambda box: box.score, reserved=True)

    for box in box_lst:

    print(box)

    展开全文
  • 目录 Key的作用原理 例子1 例子2 例子3 python3 sorted取消了对cmp的支持。...python3 帮助文档: sorted(iterable, key=None, reverse=...Python2中的**自定义布尔函数cmp=custom_cmp(x, y)由Python3中的key=custom_
  • python 自定义排序函数

    2016-07-29 16:18:00
    自定义排序函数 Python内置的 sorted()函数可对list进行排序: >>>sorted([36, 5, 12, 9, 21]) [5, 9, 12, 21, 36] 但 sorted()也是一个高阶函数,它可以接收一个比较函数来实现自定义排序,比较...
  • 数组productlist中存储的是自定义类Product,Product有一个方法是返回商品的价格,于是对productlist按照Product的价格从低到高进行排序,仅需要如此简单的一行代码即可实现。 Python真的是一门简洁而强大的语言,...
  • 文章目录一、操作手册二、Key Functions(关键字函数)三、例题:1.题目描述2.输入3.输出4.样例5.解析6.源码 一、操作手册 ①函数原型:sorted(iterable[,cmp,[,key[,reverse=True]]]),可选的参数有三个,cmp、key和...
  • python自定义排序规则

    2021-09-15 22:22:17
    这个时候就不能直接使用lambda表达式进行排序了,因为我们需要使用到两个元素中的属性进行设置排序规则,使用lambda表达式无法直接访问属性,这个时候可以借助python标准库中funtools模块,这样可以自定义排序的规则...
  • python自定义排序函数

    千次阅读 2020-11-30 00:22:58
    defcmp_ignore_case(s1,s2):ifs1[0].lower()s2[0].lower():return1else:return0printsorted(['bob','about','Zoo','Credit'],cmp_ignore_case)对于比较函数cmp_ignore_case(s1, s2),要忽略大小写比较,就是先把两个...
  • python2 中,如果想要自定义评价标准的话,可以这么做def cmp(a, b):# 如果逻辑上认为 a < b ,返回 -1# 如果逻辑上认为 a > b , 返回 1# 如果逻辑上认为 a == b, 返回 0passa = [2,3,1,2]a = sorted(a, ...
  • python 自定义排序

    万次阅读 多人点赞 2019-01-05 11:27:26
    自定义排序函数 先不关心其实原地排序还是有返回值的排序,研究其内部的排序原理,其内部是根据什么排序的呢,默认的排序方法是内建的cmp函数 对于cmp(x,y): 如果想要x排在y前面那么返回一个负数,如果想x排在y...
  • python中内置的max()函数用来得到最大值,通过冒泡排序也可以。 #!/usr/bin/python def getMax(arr): for i in range(0,len(arr)): for j in range(i+1,len(arr)): first=int(arr[i]) second=int(arr[j]) if ...
  • from functools import cmp_to_key 定义cmp规则: def cmp(a, b): if a < b: return 1 elif a > b: return -1 else: ...nums = sorted(nums, key = cmp_to_key(cmp)) ...如上就实现了升序排序
  • 主要介绍了Python自定义sorted排序实现方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • Python3使用sort函数自定义排序

    千次阅读 2020-12-05 21:51:08
    直接使用sort()函数 score = [78, 90, 40, 60] score.sort() print(score) ### [40, 60, 78, 90] 根据数据中的某一个项排序 students = [{"age": 18, "name": 'jack', "score": 89}, {"age": 15, "name": 'tom', ...
  • 自定义Python排序函数比较方式

    千次阅读 2019-04-04 22:18:12
    当你想按自己的方式对数组元素进行排序时,我们需要自定义比较函数实现我们想实现的排序方式。 例1 以降序对数组进行排序 >>> def comp(x,y): ... return y-x ... >>> a = [1,8,4,5,2,7] ...
  • 今天做力扣T937.重新排列日志文件,看见官解的sort使用key关键字很神奇,故记下来当做笔记。...#构建排序函数 f = lambda x: (0,x) if type(x)==type(0) else (1,) 上述函数意为当x的类型是数字型时,返回(0,
  • Python/自定义排序函数

    2017-05-30 20:25:26
    今天用两种方式来判断输入的值是否为升序降序和无序列三种,.../usr/bin/env python # -*- coding:utf-8 -*-def RuoLan(value): x = 1 R = [] for i in range(1,len(value)): if value[i] >= value[i - 1] or val
  • python 自定义排序sorted

    2021-12-08 21:44:22
    sorted函数语法解析: def sorted(__iterable: Iterable[_T], *...key:接受一个函数,返回需要排序的字段 reverse=True,排序结果为降序排列 import operator score = [('Alice', 72), ('Candy', 90), ('Bob', 6...
  • python的sort自定义排序

    2022-05-08 06:13:54
    剑指 Offer 45. 把数组排成最小的数 输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 示例 1: 输入: [10,2] 输出: "102" 示例 2: 输入: [3,30,34,5,9] ...
  • 自定义排序函数 sorted()也是一个高阶函数,它可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比较的元素 x, y,如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 ...
  • Python自定义排序函数 - 示例

    万次阅读 2020-01-07 22:48:01
    自定义排序函数 - 示例 自定义排序规则: def cmp_value_p_code_big(o1, o2): """ 排序规则: value大,排前面 """ if o1.value < o2.value: return 1 if o1.value > o2.value: return -1 return...
  • 今天的这篇文章和大家聊聊Python当中的排序,和很多高级语言一样,Python封装了成熟的排序函数。我们只需要调用内部的sort函数,就可以完成排序。但是实际场景当中,排序的应用往往比较复杂,比如对象类型,当中有多...
  • 原地排序的x.sort(),和不改变原列表有返回值的sorted(x)自定义排序函数先不关心其实原地排序还是有返回值的排序,研究其内部的排序原理,其内部是根据什么排序的呢,默认的排序方法是内建的cmp函数对于cmp(x,y):...
  • Python 自定义排序

    2022-06-28 09:19:02
    大家聊聊Python当中的排序,和很多高级语言一样,Python封装了成熟的排序函数。我们只需要调用内部的sort函数,就可以完成排序。但是实际场景当中,排序的应用往往比较复杂,比如对象类型,当中有多个字段,我们希望...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 47,062
精华内容 18,824
关键字:

python自定义排序函数