首页 > 编程知识 正文

Python运用函数进行排序,5-10比较数字大小

时间:2023-11-21 07:22:54 阅读:289106 作者:ZJYL

Python语言中,有很多种排序算法,可以通过自带的排序函数sort(),快速地对列表进行排序,但是如果对于特殊的需求,我们需要自定义排序函数。

一、自定义排序函数基础知识

排序函数主要是通过比较两个元素的大小来进行排序,因此我们需要对比较大小的方法进行定义,并将其作为参数传入自定义排序函数中。

def compare(x, y):
    if x > y:
        return 1
    elif x < y:
        return -1
    else:
        return 0

a = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
a.sort(compare)
print(a)

以上代码中,compare()函数接收两个参数x和y,用来判断x和y之间的大小,如果x比y大,则返回1;如果x比y小,则返回-1;如果x和y相等,则返回0。sort()函数接收一个比较大小的方法作为参数,对列表进行排序。

在上述代码中,我们使用了一个列表a,来对比较大小的方法进行测试。如果想要将a从大到小进行排序,则需要修改compare()方法,即将返回值的三个分支中的1和-1进行调换。

二、按照特定条件排序

在实际开发中,有时需要根据自定义的条件对列表进行排序,如根据年龄、成绩等条件进行排序。此时,我们需要将比较大小的条件逐一考虑,进行比较。

def sort_by_age(person):
    return person["age"]

people = [
    {"name": "Alice", "age": 25},
    {"name": "Bob", "age": 18},
    {"name": "Charlie", "age": 25},
    {"name": "David", "age": 32},
    {"name": "Eva", "age": 21},
    {"name": "Frank", "age": 25},
    {"name": "Grace", "age": 32},
]

people.sort(key=sort_by_age)
print(people)

以上代码中,我们将人员信息存储在一个列表中,每个人都包括姓名和年龄两个属性。如果想要按照年龄从小到大进行排序,则需要定义一个sort_by_age()函数,用来提取每个人的年龄。sort()函数的key参数接收一个函数作为参数,用来提取比较大小的条件。

三、按照多个条件进行排序

有时候,需要对多个条件进行排序,如先按照年龄升序排序,再按照姓名升序排序。此时,我们需要在比较大小的方法中,逐一判断多个条件,保证每个条件都得到正确的比较结果。

def compare(person1, person2):
    if person1["age"] < person2["age"]:
        return -1
    elif person1["age"] > person2["age"]:
        return 1
    else:
        if person1["name"] < person2["name"]:
            return -1
        elif person1["name"] > person2["name"]:
            return 1
        else:
            return 0

people = [
    {"name": "Alice", "age": 25},
    {"name": "Bob", "age": 18},
    {"name": "Charlie", "age": 25},
    {"name": "David", "age": 32},
    {"name": "Eva", "age": 21},
    {"name": "Frank", "age": 25},
    {"name": "Grace", "age": 32},
]

people.sort(compare)
print(people)

以上代码中,我们需要比较每个人的年龄和姓名两个条件。因此,在compare()方法中,先进行年龄的比较,如果年龄相同,则进行姓名的比较,如果姓名也相同,则认为两个人相等。

四、附加题:5到10数字比较大小

按照题目要求,对5到10这5个数字进行比较,并从小到大排序。

def compare(x, y):
    return x - y

a = [10, 5, 8, 7, 6, 9, 4, 3, 2, 1]
a.sort(compare, key=lambda x: abs(x - 7.5))
print(a)

以上代码中,我们定义了一个compare()函数,用来对5到10这5个数字进行比较。sort()方法的key参数中使用了lambda表达式,用来按照距离7.5的距离排序。因为5到10这5个数字的中位数为7.5,因此使用距离中位数的距离作为排序的参考值,可以保证排序的准确性。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。