首页 > 编程语言 >python 类中的属性排序

python 类中的属性排序

时间:2023-03-16 17:56:46浏览次数:40  
标签:函数 people python age 列表 Person 排序 类中

可以使用Python中的类(class)来定义一个包含姓名和年龄的类。以下是一个示例代码:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

在上述代码中,我们定义了一个名为 Person 的类,该类包含两个属性 nameage,分别表示人的姓名和年龄。我们使用 __init__ 方法来初始化这些属性,该方法在创建一个新的 Person 对象时被自动调用。

现在,我们可以创建一个新的 Person 对象,将其存储在一个变量中,并使用 . 操作符来访问其属性。例如:

person1 = Person("John", 30)
print(person1.name)
print(person1.age)

这将输出:

John
30

 

我们还可以创建多个 Person 对象,每个对象都可以具有不同的属性值。

 

下面我们按年龄对多个对象排序

我们可以使用 Python 的内置 sorted() 函数和 lambda 函数来创建一个按照年龄排序的比较函数。

假设我们有一个包含多个 Person 对象的列表,我们可以编写一个函数来对这个列表进行排序,如下所示:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

def sort_people_by_age(people):
    # 使用 lambda 函数创建按照年龄排序的比较函数
    compare_func = lambda p: p.age

    # 对 people 列表按照年龄排序
    sorted_people = sorted(people, key=compare_func)

    return sorted_people

在上述代码中,我们首先定义了一个 Person 类,该类包含 nameage 属性。然后,我们编写了一个名为 sort_people_by_age() 的函数,该函数接受一个包含 Person 对象的列表作为参数,并返回按照年龄排序后的 Person 对象列表。

在函数中,我们使用 lambda 函数创建一个按照 age 属性排序的比较函数,并将其传递给 Python 的 sorted() 函数中的 key 参数。sorted() 函数将根据这个比较函数对 people 列表进行排序,然后返回排序后的 Person 对象列表。

例如,假设我们有三个 Person 对象,每个对象的年龄不同。我们可以将它们存储在一个列表中,并使用 sort_people_by_age() 函数按照年龄排序:

people = [Person("John", 30), Person("Alice", 25), Person("Bob", 35)]
sorted_people = sort_people_by_age(people)

# 输出排序后的列表
for person in sorted_people:
    print(person.name, person.age)

这将输出:

Alice 25
John 30
Bob 35

注意,我们还可以使用 Python 的 sort() 方法来原地排序列表,而不是创建一个新的排序后的列表。例如,可以将 sort_people_by_age() 函数修改为原地排序 people 列表:

def sort_people_by_age(people):
    compare_func = lambda p: p.age

    # 在原地排序 people 列表
    people.sort(key=compare_func)

    return people

在这个版本的函数中,我们直接对传入的 people 列表进行排序,而不是创建一个新的列表。这意味着调用 sort_people_by_age() 函数后,原始的 people 列表将被修改为排序后的列表。

标签:函数,people,python,age,列表,Person,排序,类中
From: https://www.cnblogs.com/bertin/p/17223650.html

相关文章

  • python文件目录下的 __init__.py 文件说明(转摘)
    1、python中的项目结构是按照目录来组织的,每个python文件就是一个模块,将模块整合在一起就是包,也就是把服务于某个功能的一系列模块放在一个目录中,这样如果想要使用某个包......
  • 【python】combinations函数遍历列表内元素不同组合
    在参数调优的过程中,不同个体数的样本组合需要计算,但是一个一个用for来穷尽组合的可能显得太过笨拙,查到可以用itertools中的combinations模块来处理类似的问题:fromiterto......
  • python中的typing库
    typing的主要作用有:类型检查,防止运行时出现参数、返回值类型不符作为开发文档附加说明,方便使用者调用时传入和返回参数类型模块加入不会影响程序的运行不会报正式的错......
  • 20230314-python-字典与json
    1.字典的定义                      ......
  • 小白也能学会的精简版GA遗传算法(Python)
    今天无意中看到了一篇讲遗传算法的文章,文章内容很短,大部分都是代码,代码跟平时见到的遗传算法不同之所以要拿这篇文章来讲,主要是因为原文没有对代码进行解释,但是,这段......
  • python datetime模块常用功能
    时间的转换:时间戳转日期(datetime.date.fromtimestamp(1234567896)),返回日期年-月-日时间戳转年月日时分秒(datetime.datetime.fromtimestamp(123456789......
  • python 雪花算法demo
    importtimeimportloggingclassInvalidSystemClock(Exception):"""时钟回拨异常"""pass#64位ID的划分WORKER_ID_BITS=5DATACENTER_ID_B......
  • python工程打包成可执行文件
    1、将python打包成exe的方式python上常见的打包方式目是通过pyinstaller来实现的。pipinstallpyinstaller或者用镜像下载:#清华源pipinstallpyinstaller-i......
  • python选出一定数量的随机文件到某个文件夹
    importosimportrandomimportshutildefmove_file(target_path,save_path,number):file_list=os.listdir(target_path)random.shuffle(file_list)......
  • python用递归方式去掉首尾空格
    #递归去除空格deftrip_str(s):   ifs[0]=='':       returntrip_str(s[1:])   elifs[-1]=="":       returntrip_str(s[:-1])......