基于python的-sorted()函数,用于排序

本文介绍了Python中使用sorted()函数进行列表排序的方法,包括基本的数字和字符串排序,以及如何通过自定义比较函数来实现降序排序和不区分大小写的字符串排序。
# -*- coding:utf-8 -*-

# sorted() 函数 可以对数字(从小到大,从大到小)或字符串(ASCII)进行排序
# 对数字进行排序

list1 = [1,24,43,12,41,145,3,545]

# 默认按照升序排序
rs = sorted(list1)
print(rs)

# 实现一个按照降序排序的函数
# 如果x>y 返回-1,如果x<y返回1 是按照降序排序
# 如果x>y 返回1,如果x<y返回-1 按照默认的升序排列
def reversed(x, y ):
    if x > y:
        return -1
    if x < y :
        return 1
    return 0
rs = sorted(list1,reversed)
print(rs)

list2 = ['f','s','g','l','u','i','q']
rs = sorted(list2,reversed)
print(rs)

# 如果需要实现字符串的排序,忽略大小写,只按照小写的a-z进行排序
list3 = ['if','with','BOY','Adc']
def char_sort(string1,string2):
    # 把两个字符串全部转换为小写或大写
    s1 = string1.lower()
    s2 = string2.lower()
    if s1 > s2:
        return -1
    if s1 < s2:
        return  1
    return 0
rs = sorted(list3,char_sort)
print(rs)
### Python `sorted()` 函数排序规则 `sorted()` 函数遵循特定的排序规则来处理各种类型的可迭代对象。对于基本的数据类型,如整数、浮点数和字符串,默认情况下会按照自然顺序进行升序排列[^5]。 当涉及到更复杂的情况时,比如自定义对象或需要特殊排序逻辑的情况下,则可以通过提供关键字参数 `key` 来指定一个函数,这个函数将应用于每个元素上以决定它们之间的相对顺序[^3]。 #### 默认排序行为 考虑一组简单的数值列表: ```python numbers = [5, 2, 9, 1, 7] sorted_numbers = sorted(numbers) print(sorted_numbers) # 输出: [1, 2, 5, 7, 9] ``` 这里展示了如何利用 `sorted()` 对数字列表执行标准升序排序操作[^1]。 #### 自定义排序方式 如果想要改变默认的行为,可以传递给 `key` 参数一个 lambda 表达式或其他形式的一元函数作为比较依据。例如按绝对值大小来进行排序: ```python abs_sorted_numbers = sorted([-4, -1, 0, 3], key=abs) print(abs_sorted_numbers) # 输出: [0, -1, 3, -4] ``` 这段代码说明了怎样通过设置 `key` 参数实现基于绝对值得到的结果集[^2]。 #### 复杂数据结构中的应用 除了简单类型外,在面对包含多个属性的对象集合时同样适用。假设有一个学生类及其成绩记录构成的列表,现在要根据学生的年龄从小到大排序: ```python class Student: def __init__(self, name, age): self.name = name self.age = age students = [ Student('Alice', 20), Student('Bob', 22), Student('Charlie', 18) ] age_sorted_students = sorted(students, key=lambda student: student.age) for s in age_sorted_students: print(f'{s.name}: {s.age}') # 输出: # Charlie: 18 # Alice: 20 # Bob: 22 ``` 上述例子表明即使是在较为复杂的场景下也能灵活运用 `sorted()` 实现预期效果[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值