Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >20 - 如果列表元素是对象,该如何进行排序

20 - 如果列表元素是对象,该如何进行排序

原创
作者头像
ruochen
修改于 2021-05-24 02:28:12
修改于 2021-05-24 02:28:12
1.2K0
举报

1. 如果列表元素是对象,对这样的列表排序有哪些方法 ?

代码语言:txt
AI代码解释
复制
class MyClass:
    def __init__(self):
        self.value = 0
      
    '''
    def __gt__(self, other):
        return self.value > other.value
        '''
    
    def __lt__(self, other):
        return self.value > other.value
        
    
my1 = MyClass()
my1.value = 20

my2 = MyClass()
my2.value = 10

my3 = MyClass()
my3.value = 30

a = [my1, my2, my3]
print(a)

import operator

# a.sort()

a.sort(key=operator.attrgetter('value'))
b = sorted(a, key=operator.attrgetter('value'))
print(a[0].value)
print(a[1].value)
print(a[2].value)

print(b[0].value)
代码语言:txt
AI代码解释
复制
[<__main__.MyClass object at 0x00000205D1AB5DA0>, <__main__.MyClass object at 0x00000205D1AB5668>, <__main__.MyClass object at 0x00000205D1AB5D68>]
代码语言:txt
AI代码解释
复制
10
代码语言:txt
AI代码解释
复制
20
代码语言:txt
AI代码解释
复制
30
代码语言:txt
AI代码解释
复制
10

2. 如果列表元素是对象,进行倒序排列的方法有哪些 ?

代码语言:txt
AI代码解释
复制
# a.sort(key=operator.attrgetter('value'), reverse=True)

a.sort()

print(a[0].value)
print(a[1].value)
print(a[2].value)
代码语言:txt
AI代码解释
复制
30
代码语言:txt
AI代码解释
复制
20
代码语言:txt
AI代码解释
复制
10

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一日一技:包含元组的列表,对第一个元素升序第二个元素降序
大家都知道,在Python里面可以使用.sort方法或者sorted函数对各种数据进行排序,例如:
青南
2023/01/03
9400
一日一技:包含元组的列表,对第一个元素升序第二个元素降序
深入理解python中的排序
进行一个简单的升序排列直接调用sorted()函数,函数将会返回一个排序后的列表:
desperate633
2018/08/23
6280
Python神器列传:函数神器functools模块全解析
作者:j_hao104 来源:见文末 functools 模块提供用于调整或扩展函数和其他可调用对象的工具,而无需完全重写它们。 装饰器 partial 类是 functools 模块提供的主要工具, 它可以用来“包装”一个可调用的对象的默认参数。它产生的对象本身是可调用的,可以看作是原生函数。它所有的参数都与原来的相同,并且可以使用额外的位置参数或命名参数来调用。使用 partial 代替 lambda 来为函数提供默认参数,同时保留那些未指定的参数。 Partial 对象 下面列子是对 myfunc
小小科
2018/06/20
1K0
谁告诉的你们Python是强类型语言!站出来,保证不打你!
最近有些学员问我,Python到底是强类型语言,还是弱类型语言。我就直接脱口而出:Python是弱类型语言。没想到有一些学员给我了一些文章,有中文的,有英文的,都说Python是强类型语言。我就很好奇,特意仔细研究了这些文章,例如,下面就是一篇老外写的文章:
蒙娜丽宁
2020/08/31
1.1K0
谁告诉的你们Python是强类型语言!站出来,保证不打你!
Python应用——自定义排序全套方案
今天的这篇文章和大家聊聊Python当中的排序,和很多高级语言一样,Python封装了成熟的排序函数。我们只需要调用内部的sort函数,就可以完成排序。但是实际场景当中,排序的应用往往比较复杂,比如对象类型,当中有多个字段,我们希望按照指定字段排序,或者是希望按照多关键字排序,这个时候就不能简单的函数调用来解决了。
TechFlow-承志
2020/03/05
9550
python 排序自定义对象
class User: def init(self, user_id): self.user_id = user_id
用户5760343
2022/01/10
5450
每天一道 python 面试题 - Python反射与自省
自省:自省就是能够获得自身的结构和方法,给开发者可以灵活的调用,给定一个对象,返回该对象的所有属性和函数列表,或给定对象和该对象的函数或者属性的名字,返回对象的函数或者属性实例
公众号---人生代码
2020/05/18
7550
算法学习笔记(二):贪心算法
(一)    贪心法 贪心法在解决问题的策略上是根据当前已有的信息做出选择,不管将来有什么结果,这个选择都不会改变。换言之,贪心法并不是从整体最优考虑,它所做出的选择只是某种意义上的局部最优。 用贪心法求解的问题一般具有2个重要的性质: (1)   最优子结构:当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构。问题的最优子结构是该问题能采用贪心法求解的关键性质。 (2)   贪心选择性质:指问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来得到。这也是贪心法和动态规划法的主要区别。
free赖权华
2018/07/04
1.1K0
Python标准库笔记(7) — copy模块
目录[-] copy-对象拷贝模块;提供了浅拷贝和深拷贝复制对象的功能, 分别对应模块中的两个函数 copy() 和 deepcopy()。 1.浅拷贝(Shallow Copies) copy() 创建的 浅拷贝 是一个新的容器,它包含了对原始对象的内容的引用。也就是说仅拷贝父对象,不会拷贝对象的内部的子对象。即浅复制只复制对象本身,没有复制该对象所引用的对象。比如,当创建一个列表对象的浅拷贝时,将构造一个新的列表,并将原始对象的元素添加给它。 import copy class MyClass
jhao104
2018/04/04
8990
Python标准库笔记(7) — copy模块
Python 列表、字典、元组的一些小技巧
我们知道 Python 的内置 dictionary 数据类型是无序的,通过 key 来获取对应的 value。可是有时我们需要对 dictionary 中的 item 进行排序输出,可能根据 key,也可能根据 value 来排。到底有多少种方法可以实现对 dictionary 的内容进行排序输出呢?下面摘取了使用 sorted 函数实现对 dictionary 的内容进行排序输出一些精彩的解决办法。
章鱼猫先生
2021/10/15
1.2K0
Python 列表、字典、元组的一些小技巧
python list排序
python 列表list中内置了一个十分有用的排序函数sort,sorted,它可以用于列表的排序,以下是例子。
py3study
2020/01/07
1.2K0
英伟达小姐姐的Python隐藏技巧合集,推特2400赞,代码可以直接跑
常常发资源的英伟达工程师小姐姐Chip Huyen,又发射了一套Python隐藏功能合集。
量子位
2019/10/25
5090
Python中sort与sorted函数
python中列表的内置函数sort()可以对列表中的元素进行排序,而全局性的sorted()函数则对所有可迭代的序列都是适用的;
全栈程序员站长
2022/11/15
7010
[902]python list排序
sorted(list)返回一个对象,可以用作表达式。原来的list不变,生成一个新的排好序的list对象。
周小董
2020/09/30
7280
python 列表特点及常用操作
Extend  接受参数并将该参数的每个元素都添加到原有的列表中,原地修改列表而不是新建列表
py3study
2020/01/07
8780
2018年8月23日python中列表的高级操作:列表推导式,列表生成器,列表迭代器
列表在我们平常的编程中经常会用到,多用于临时存储一些程序需要的数据, 向列表中添加数据时,有多种方式: 1.数据少的话直接定义列表中的数据 my1 = [0, 1, 2, 3, 4, 5] 2.当数据稍微多点的话可以用for循环的方式向列表中添加数据,但是操作比较繁琐     my2 = list() for i in range(100):          my2.append(i)
武军超
2018/09/27
1.5K0
Python3 | 练气期,面向对象、类魔术方法,类修饰器!
如果你接触过 Java、Golang 编程语言,那么你一定知道面向对象编程(OOP)的概念。面向对象编程(OOP)是相对于面向过程编程而言的,面向过程编程是一种以过程为中心的开发模式,而面向对象编程则是以对象为中心的开发模式。
全栈工程师修炼指南
2024/07/29
2180
Python3 | 练气期,面向对象、类魔术方法,类修饰器!
Python中使用operator模块实现对象的多级排序
今天碰到一个小的排序问题,需要按嵌套对象的多个属性来排序,于是发现了python里的operator模块和sorted函数组合可以实现这个功能。 比如我有如下的类关系,A对象引用了一个B对象, class A(object): def __init__(self, b): self.b = b def __str__(self): return "[%s, %s, %s]" % (self.b.attr1, self.b.attr2, self.b.attr3
kongxx
2018/05/14
8510
Python标准库笔记(10) — itertools模块
目录[-] itertools 用于更高效地创建迭代器的函数工具。 itertools 提供的功能受Clojure,Haskell,APL和SML等函数式编程语言的类似功能的启发。它们的目的是快速有效地使用内存,并且将它们关联在一起以表示更复杂的基于迭代的算法。 基于迭代器的代码比使用列表的代码提供了更好的内存消耗特性。因为直到数据需要使用时才从迭代器中生成,所有数据不需要同时存储在内存中。这种 “惰性” 的处理模式可以减少大型数据集的交换和其他副作用,从而提高性能。 除了 itertools 中
jhao104
2018/06/19
1.8K0
Python 学习入门(11)—— 排序
Python的内置dictionary数据类型是无序的,通过key来获取对应的value。可是有时我们需要对dictionary中 的item进行排序输出,可能根据key,也可能根据value来排。
阳光岛主
2019/02/19
4120
推荐阅读
相关推荐
一日一技:包含元组的列表,对第一个元素升序第二个元素降序
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档