首页Python【Python内置函数】s...

【Python内置函数】sorted()函数

Python 提供了许多内置函数,这些函数是Python语言的一部分,可以直接在Python程序中使用而无需导入任何模块。

本系列将会陆续整理分享一些的Python内置函数。

文章配套代码获取有以下两种途径:
  • 通过百度网盘获取:
链接:https://pan.baidu.com/s/11x9_wCZ3yiYOe5nVcRk2CQ?pwd=mnsj 提取码:mnsj
  • 前往GitHub获取
https://github.com/returu/Python_built-in_functions





01
简介

sorted() 函数是 Python 中的一个内置函数,用于对所有可迭代的对象(如列表、元组、字典、集合等)进行排序,并返回一个新的排好序的列表。该函数不会改变原始的可迭代对象,而是返回一个新的列表。

sorted() 函数的基本语法如下:

sorted(iterable, key=None, reverse=False)
参数说明:
  • iterable:要进行排序的可迭代对象;
  • key: 指定了一个包含一个参数的函数,用于从 iterable 中的每个元素中提取一个比较键(例如 key=str.lower)。默认为 None,表示直接比较元素本身;
  • reverse:布尔值,如果为 True,则列表元素将按降序排列;如果为 False,则按升序排列。默认为 False

返回值:

sorted() 函数返回一个新的列表,该列表是排序后的结果。

02
使用

sorted() 函数非常灵活,可以通过 reverse 参数实现降序排序,通过key 参数指定一个函数以确定排序的依据。

下面是一些使用 sorted() 函数的示例:

  • 示例 1:基本排序

numbers = [5, 2, 9, 1, 5, 6]
sorted_numbers = sorted(numbers)
print(sorted_numbers)
# 输出:[1, 2, 5, 5, 6, 9]


  • 示例 2:按降序排序(reverse参数)

numbers = [5, 2, 9, 1, 5, 6]
sorted_numbers = sorted(numbers, reverse=True)
print(sorted_numbers)
# 输出:[9, 6, 5, 5, 2, 1]


  • 示例 3:根据对象的属性或键进行排序(key 参数)

使用lambda表达式来定义简单的key函数。例如,根据字典的某个值进行排序:
students = [
    {'name''Alice''age': 24},
    {'name''Bob''age': 20},
    {'name''Charlie''age': 22}
]

# 根据年龄升序排列
sorted_students = sorted(students, key=lambda x: x['age'])
print(sorted_students)
# 输出:[{'name': 'Bob', 'age': 20}, {'name': 'Charlie', 'age': 22}, {'name': 'Alice', 'age': 24}]

将一些内置函数作为key函数。例如,对字符串列表按长度排序:

words = ["apple""banana""cherry""date"]

# len函数获取每个字符串的长度,并据此排序
sorted_words = sorted(words, key=len)
print(sorted_words)
# 输出:['date', 'apple', 'banana', 'cherry']

定义一个自定义函数作为key函数,实现自定义排序。例如,根据每个迭代对象第一个元素的大小进行排序:

# 自定义函数,用于获取每个迭代对象的第一个元素
def get_second_element(item):
    return item[0]

pairs = [(3, 4), (1, 2), (5, 6), (2, 7)]
# 使用自定义函数进行排序
sorted_pairs = sorted(pairs, key=get_second_element)
print(sorted_pairs)  # 输出: [(1, 2), (3, 4), (5, 6)]
# 输出:[(1, 2), (2, 7), (3, 4), (5, 6)]


本篇文章来源于微信公众号: 码农设计师

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments