广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python3 类排序 类比较
  • 408
分享到

python3 类排序 类比较

2023-01-31 01:01:25 408人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

文章目录自定义类比较自定义类排序 自定义类比较 让python3 的类支持比较操作可以利用total_ordering修饰器重载 ==, <=, > 运算符 官方文档是这样说的 来自此文档 示例代码: 这份代码由于是

文章目录

    • 自定义类比较
    • 自定义类排序

自定义类比较

python3 的类支持比较操作可以利用total_ordering修饰器重载 ==, <=, > 运算符

官方文档是这样说的
在这里插入图片描述
来自此文档

示例代码:

这份代码由于是重载了比较符号, 因此可以进行比较操作, 而执行sorted函数时也可以根据自定义的比较操作排序了.

from functools import total_ordering

@total_ordering
class Movies:
    '''
    电影信息, 包含标题和评分数据, 期望自定义根据评分排序
    '''
    def __init__(self, title='default', score=-0.0): # 初始化操作, 设置默认值
        self.title = title
        self.score = score

    def __str__(self): # 自定义打印类的内容
        return "{} : {}".fORMat(self.title, self.score)

    # 使用total_ordering修饰器重载 ==, <=, > 运算符
    def __eq__(self, other):
        return self.score == other.score

    def __le__(self, other):
        return self.score < other.score

    def __gt__(self, other):
        return self.score > other.score

movie = [0]*3

movie[0] = Movies("电影1", 8.1)

# movie_2 = Movies()
movie[1] = Movies('电影2', 9.2)

movie[2] = Movies("电影3", 3.4)

for each in movie:
    print(each)
print("-----\n")

sorted_movie = sorted(movie)

for each in sorted_movie:
    print(each)

print(movie[1] > movie[2])

输出结果
在这里插入图片描述

自定义类排序

这个思路是改变sorted函数的key, 从而实现对类的自定义排序

使用functools库或者自己直接构造lambda自定义排序的元素.

感觉自定义lambda函数要方便很多, 代码少, 要切换升序降序给元素添个负号就好了.

import functools

class Movies:
    '''
    电影信息, 包含标题和评分数据, 期望自定义根据评分排序
    '''
    def __init__(self, title='default', score=-0.0): # 初始化操作, 设置默认值
        self.title = title
        self.score = score

    def __str__(self): # 自定义打印类的内容
        return "{} : {}".format(self.title, self.score)

def cmp(self, other): # 自定义比较函数
    if self.score < other.score:
        return 1
    elif self.score == other.score:
        return 0
    else:
        return -1

movie = [0]*3

movie[0] = Movies("电影1", 8.1)

# movie_2 = Movies()
movie[1] = Movies('电影2', 9.2)

movie[2] = Movies("电影3", 3.4)

# sorted_movie = sorted(movie, key=functools.cmp_to_key(cmp))
sorted_movie = sorted(movie, key=lambda mov: -mov.score)

for each in sorted_movie:
    print(each)

输出结果
在这里插入图片描述

--结束END--

本文标题: python3 类排序 类比较

本文链接: https://www.lsjlt.com/news/184690.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python3 类排序 类比较
    文章目录自定义类比较自定义类排序 自定义类比较 让python3 的类支持比较操作可以利用total_ordering修饰器重载 ==, <=, > 运算符 官方文档是这样说的 来自此文档 示例代码: 这份代码由于是...
    99+
    2023-01-31
  • Python3怎么实现自定义比较排序
    本篇内容介绍了“Python3怎么实现自定义比较排序”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!自定义比较排序/运算符Python3和Py...
    99+
    2023-06-29
  • python3数据库分类和比较(入门)
    目录: 一、关系型数据库 (一)常用关系型数据库: 二、非关系型数据库 (一)常用非关系型数据库: (二)分类: 文档型 key-value型 列式数据库 图形数据库 一、关系型...
    99+
    2023-01-31
    入门 数据库
  • Python3实现自定义比较排序/运算符
    目录自定义比较排序/运算符1.cmp函数2.重写类方法Python3实现各种排序方法自定义比较排序/运算符 Python3和Python2相比有挺多变化。 在Python2中可以直接...
    99+
    2022-11-13
  • python3默认排序函数的多属性比较
    Python3开始sorted函数和list.sort函数不再接收cmp作为参数,只使用key参数作为比较关键词,这样处理多属性的比较就比较麻烦。 一种有效的解决方案是key参数传入比较函数,返回值是所需比较的多个属性按优先级排列的一...
    99+
    2023-01-31
    函数 属性
  • Oracle date 类型比较和String比较
    定义表结构: Log 表结构: 这里是varchar 可以进行Oracle 比较。 ...
    99+
    2022-10-18
  • 比较排序之快速排序(实例代码)
    快速排序(简称快排)因为其效率较高(平均O(nlogn))经常在笔试题中对其考查。对于快排的第一步是选取一个“基数”,将会用这个“基数”与其它数进行比较交换。而这个“基数”的选择将影响到快排的效率如何,但如果为了选择基数而选择基数则会本末倒...
    99+
    2023-05-31
    快速排序 java 比较排序
  • mysql中varchar类型的日期进行比较、排序等操作的实现
    在mysql使用过程中,日期一般都是以datetime、timestamp等格式进行存储的,但有时会因为特殊的需求或历史原因,日期的存储格式是varchar,那么我们该如何处理这个v...
    99+
    2022-11-12
  • mysql中varchar类型如何实现日期进行比较、排序等操作
    这篇文章主要介绍mysql中varchar类型如何实现日期进行比较、排序等操作,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在mysql使用过程中,日期一般都是以datetime、timestamp等格式进行存储的,...
    99+
    2023-06-25
  • java Long 类型如何比较
    Java 中的 Long 类型可以使用下列方法进行比较: 使用 compareTo 方法: long x = 10;long y = 20;int result = Long.compare(x, y);if (result < 0...
    99+
    2023-10-03
  • Golang数据类型比较详解
    目录 基本数据类浮点比较字符串比较引用类型slice、mapslice、map比较channel、指针聚合类型数组结构体接口最后做个练习直接使用==比较的情况 分类说明是否...
    99+
    2023-05-15
    Golang数据类型比较 Golang数据类型 Golang数据
  • php弱类型比较及绕过
    title: php弱类型比较以及绕过 date: 2022-11-20 12 :14 :36 tags: php categories: 学习笔记 author: Abyssaler PHP中的...
    99+
    2023-09-28
    php 开发语言 数据库
  • Python数字比较与类结构
    目录前言问题简述一个想法总结前言 版本: windows 10.0python 3.8 问题简述 近期看到这么一个问题,有把值分别赋值给不同的变量,想在比较大小后得到变量的名称。 a...
    99+
    2022-11-11
  • Java String类的性质与比较
    目录1.什么是String?2.String类的构造方法3.String类的性质4.String之间的相互比较1.什么是String? 首先,初学者一定要知道String是一个类,...
    99+
    2022-11-12
  • Javadouble类型比较大小详解
    目录Java double类型比较大小一、问题描述二、解决方法关于两个double类型数的大小判断Java double类型比较大小 一、问题描述 把从数据库里查询出来的数据,金额小...
    99+
    2022-11-12
  • Java排序算法速度比较(转载)
    public class Sort { public void swap(int a[], int i, int j) { int tmp = a[i]; a[i] = a[j]; a[j] = tmp; } p...
    99+
    2023-06-03
  • Java案例使用比较排序器comparator实现成绩排序
    需求:用TreeSet集合存储多个学生信息(姓名,语文成绩,数学成绩),并遍历该集合;要按照总分从高到低进行排序 分析: 1.创建学生类 成员变量 姓名,语文成绩、数学成绩;成员方法...
    99+
    2022-11-13
  • Go和Laravel:数据类型的比较与对比
    Go和Laravel是两种不同的编程语言,各有其独特的特点和优势。其中,数据类型是两种语言中最为基础和重要的部分,本文将从数据类型的角度对Go和Laravel进行比较与对比。 一、基础数据类型 Go和Laravel的基础数据类型都有一些相...
    99+
    2023-07-19
    numy laravel 数据类型
  • mysql中怎么比较时间类型
    这篇文章给大家介绍mysql中怎么比较时间类型,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 相同 显示 TIMESTAMP列的显示格式与DATETIME列相同。换句话说,显示宽...
    99+
    2022-10-18
  • python类型比较的3种方式
    通过types模块的类成员来判断,其实所有python中的类型都是这个types模块中类型的实例。 import types  type(x) is types.IntType # 判断是否int 类型  type(x) is typ...
    99+
    2023-01-31
    类型 方式 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作