精华内容
下载资源
问答
  • python自定义排序函数

    万次阅读 2016-01-02 16:47:08
    python自定义排序函数,有两种方式 第一种自定义函数: # 自定义排序函数 def func(x,y): if x return -1 if x==y: return 0 else: return 1 a = [3,6,2,8,4] print u'正序排列:',sorted(a,func) print u'

    
    
    python自定义排序函数,有两种方式

    第一种自定义函数:

    <pre name="code" class="python"># 自定义排序函数
    def func(x,y):
        if x<y:
            return -1
        if x==y:
            return 0
        else:
            return 1
    a = [3,6,2,8,4]
    print u'正序排列:',sorted(a,func)
    print u'倒序排列:',sorted(a,func,reverse=True)#reverse=True的作用是反转序列
    #注意,sorted需要传入的第二个参数是一个函数,所以写func,而不是func(x,y),
    #func(x,y)的结果是一个值,func才是一个函数,下面使用lambda也是一个函数


    
    结果:
    

    正序排列: [2, 3, 4, 6, 8]
    倒序排列: [8, 6, 4, 3, 2]
    第二种使用匿名函数lambda和cmp函数:

    (cmp(x,y)如果x<y,则返回-1,如果x=y,则返回0,如果x>y,则返回1)

    # 使用lambda表达式
    print u'正序排列:',sorted(a,lambda x,y:cmp(x,y))# 正序排列
    print u'倒序排列:',sorted(a,lambda x,y:-cmp(x,y))# 倒序排列
    结果:

    正序排列: [2, 3, 4, 6, 8]
    倒序排列: [8, 6, 4, 3, 2]






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

    2016-07-29 16:18:00
    自定义排序函数 Python内置的 sorted()函数可对list进行排序: >>>sorted([36, 5, 12, 9, 21]) [5, 9, 12, 21, 36] 但 sorted()也是一个高阶函数,它可以接收一个比较函数来实现自定义排序,比较...
    自定义排序函数
    
    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)

     

    转载于:https://www.cnblogs.com/superxuezhazha/p/5718829.html

    展开全文
  • 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 自定义排序高级函数1、自定义排序高级函数 `sort_self`2、示例13、示例2 1、自定义排序高级函数 sort_self def sort_self(iterable, *, key=None, reverse=False): # [5, 1, 3, 0, 6] newlist = [] # 5 ...

    1、自定义排序高级函数 sort_self

    def sort_self(iterable, *, key=None, reverse=False):  # [5, 1, 3, 0, 6]
        newlist = [] # 5 
        for x in iterable: # 1
            cx = key(x) if key else x # cx = 1
            for i, y in enumerate(newlist):  # i = 0 y = 5
                cy = key(y) if key else y  # cy = 5
                order = cx > cy if reverse else cx < cy # 1 < 5
                if order:
                    newlist.insert(i, x)
                    break  # 找到了合适的插入位置并插入成功了
            else:
                newlist.append(x)
        return newlist
    

    2、示例1

    list1 = [1, 5, 3, 9, 7]
    print(sort_self(list1))
    print(sort_self(list1, reverse=True))
    print(sort_self(list1, key = lambda x: 10 - int(x)))
    
    [1, 3, 5, 7, 9]
    [9, 7, 5, 3, 1]
    [9, 7, 5, 3, 1]
    

    3、示例2

    list2 = [1, 5, 3, 9, 7, '1', 'a', '=']
    print(sort_self(list2, key = lambda x: ord(str(x))))
    print(sort_self(list2, key = str, reverse=True))
    
    [1, '1', 3, 5, 7, 9, '=', 'a']
    ['a', '=', 9, 7, 5, 3, 1, '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内置的sorted()函数可对...但sorted()也是一个高阶函数,它可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比较的元素 x, y,如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y ...
  • python自定义函数基础概述为了实现重复操作,简化劳动强度(为了偷懒)教程来源,b站python学习者计算字符串函数# 实现len函数的功能#len是返回字符串的长度s=sunqilength = 0for i in s:length +=1# 等价于length=...
  • 自定义排序函数sorted(): 接收一个比较函数来实现自定义排序,比较函数的定义是:传入两个带比较的函数x,y ,如果x 应该排在y的前面,返回-1 ,如果x 应该排在 y 的后面,返回1 ,如果 x 和 y 相等,返回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 自定义排序

    万次阅读 2019-01-05 11:27:26
    自定义排序函数 先不关心其实原地排序还是有返回值的排序,研究其内部的排序原理,其内部是根据什么排序的呢,默认的排序方法是内建的cmp函数 对于cmp(x,y): 如果想要x排在y前面那么返回一个负数,如果想x排在y...
  • sorted()也是一个高阶函数,它可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比较的元素 x, y,如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 x 和 y 相等,...
  • Python 自定义排序

    2018-07-10 20:50:00
    自定义排序方法 可以通过将函数传入sorted函数的cmp参数来实现按照自定义规则排序 ...自定义排序函数必须 接受两个参数 n1, n2 返回一个整数 返回的整数 为负数,则n1 < n2 为正数,则n1 > n...
  • 自定义排序函数 sorted()也是一个高阶函数,它可以接收一个比较函数来实现自定义排序,比较函数的定义是,传入两个待比较的元素 x, y,如果 x 应该排在 y 的前面,返回 -1,如果 x 应该排在 y 的后面,返回 1。如果 ...
  • Python自定义排序

    2018-09-07 21:09:00
    比如自定义了一个class,并且实例化了这个类的很...第二种是在sorted( )函数中为key指定一个lambda函数,lambda函数用来排序。 举例(这里都是降序排序,所以指定了reserved=True,可以忽略): 第一种方法: clas...
  • 目录 Key的作用原理 例子1 例子2 例子3 python3 sorted取消了对cmp的支持。...python3 帮助文档: sorted(iterable, key=None, reverse=...Python2中的**自定义布尔函数cmp=custom_cmp(x, y)由Python3中的key=custom_
  • 学习过python计算机编程语言的同学们都知道,python本身提供了python 列表排序功能,且它的排序算法是稳定的(key相等的两项在排序后的先后次序不变),那么如何如何通过key函数来进行自定义排序呢?下面的python...
  • Python 2.x中,我可以将自定义函数传递给sorted和.sort函数>>> x=['kar','htar','har','ar']>>>>>> sorted(x)['ar', 'har', 'htar', 'kar']>>>>>> sorted(x,cmp=customsort)['kar', 'htar', 'har', 'ar']因为,在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 38,081
精华内容 15,232
关键字:

python自定义排序函数

python 订阅