美文网首页程序员Python
Python基数(12) - 如何对列表元素是对象的排序

Python基数(12) - 如何对列表元素是对象的排序

作者: xianling_he | 来源:发表于2020-02-25 20:51 被阅读0次

列表元素是对象,对这样的列表排序方法

  • 添加类方法使用lt
class MyClass:
    def __index__(self):
        self.value = 0

    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]


a.sort()
print(a[0].value)
print(a[1].value)
print(a[2].value)
image.png
  • 添加类方法使用gt
class MyClass:
    def __index__(self):
        self.value = 0
    '''
        def __lt__(self, other):
        return self.value < other.value
    '''
    def __gt__(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]


a.sort()
print(a[0].value)
print(a[1].value)
print(a[2].value)
image.png
  • 使用operator类
class MyClass:
    def __index__(self):
        self.value = 0

my1 = MyClass()
my1.value = 20

my2 = MyClass()
my2.value = 10

my3 = MyClass()
my3.value = 30

import operator   #导入operator

a = [my1,my2,my3]

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:',b[0].value)
image.png

列表元素是对象,对这样的列表如何进行倒序排列

  • 添加参数reverse = True
class MyClass:
    def __index__(self):
        self.value = 0

my1 = MyClass()
my1.value = 20

my2 = MyClass()
my2.value = 10

my3 = MyClass()
my3.value = 30

import operator

a = [my1,my2,my3]

a.sort(key=operator.attrgetter('value'),reverse=True)
b = sorted(a,key=operator.attrgetter('value'))


print(a[0].value)
print(a[1].value)
print(a[2].value)
image.png
  • 将lt,gt的符号改成相反的即可
    def __lt__(self, other):
        return self.value > other.value

    def __gt__(self, other):
        return self.value < other.value

总结

1.为类添加gt & lt 的方法,可以让类的实例支持sort,sorted函数
2.通过改变gt & lt方法的返回值,或者设置一下sort,sorted函数的reverse参数,就可以让列表倒序排列

相关文章

  • Python基数(12) - 如何对列表元素是对象的排序

    列表元素是对象,对这样的列表排序方法 添加类方法使用lt 添加类方法使用gt 使用operator类 列表元素是对...

  • iOS - 基数排序

    Demo_github 基数排序 基数排序(Radix Sort)是根据关键字中各位的值,通过对排序的N个元素进行...

  • Python基础(6) - 打乱列表顺序的操作

    手工打乱列表元素的顺序 编写函数(不使用Python模块的函数),打乱列表元素的顺序 如何对列表元素进行随机排列 ...

  • Python 数据结构 list

    列表 一个队列,一个排序整齐的队伍 列表内的个体称为元素,由若干元素组成列表 元素可以是任意对象(数字,字符串,对...

  • 一次性把Python中的排序方法都学透!

    本文主要介绍了Python常用的内置数据结构的各种排序方式。 列表的排序 列表元素如下: 按照嵌套列表的第二个元素...

  • 2.1 核心数据结构(1)

    列表 1. 列表的特性介绍 列表内的元素是可变的。-> 列表的元素可以是 Python 的任何类型的数据和对象``...

  • python之理解排序

    python之理解排序 排序是以某种顺序从集合中存放元素的过程。例如,单词列表可以按字母顺序或按长度排序。城市列表...

  • python实现基数排序(Radix Sort)

    python实现【基数排序】(Radix Sort) 算法原理及介绍 基数排序核心思想是按照低位先排序,然后收集;...

  • python入门笔记,深夜放毒

    sort() 改方法用来对列表中的元素进行排序 sort()方法默认是直接比较列表中的元素大小 在sort()可以...

  • 算法之二分查找

    排序算法 二分查找 用于有序元素列表的查找性能: Python实现: C#实现

网友评论

    本文标题:Python基数(12) - 如何对列表元素是对象的排序

    本文链接:https://www.haomeiwen.com/subject/vmfqchtx.html