当前位置: 首页 > article >正文

sort与sorted区别用法

文章目录

  • sorted内置函数
      • 示例
  • sort是list的方法
      • 示例

sorted内置函数

sorted() 函数是 Python 中的一个内置函数,用于对可迭代对象(如列表、元组、字典等)进行排序,并返回一个新的列表,其中包含排序后的元素。sorted() 函数非常灵活,它接受多个参数来控制排序的行为。以下是一些常用的 sorted() 函数参数:

  1. iterable(必需): 需要进行排序的可迭代对象。

  2. key(可选): 一个函数,用于从每个元素中提取一个用于比较的关键字。它应该接受一个参数并返回一个用于排序的键。默认值为 None,表示直接比较元素本身。

  3. reverse(可选): 布尔值,指定排序顺序。如果设置为 True,则列表将以降序排列,默认为 False,表示升序排列。

示例

基本使用

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

使用 key 参数

假设我们有一个字符串列表,我们想要根据字符串的长度来排序:

words = ["banana", "pie", "Python", "apple"]
sorted_words = sorted(words, key=len)
print(sorted_words)  # 输出: ['pie', 'apple', 'banana', 'Python']

使用 reverse 参数

如果我们想要上面的列表以降序排列:

sorted_words_desc = sorted(words, key=len, reverse=True)
print(sorted_words_desc)  # 输出: ['Python', 'banana', 'apple', 'pie']

对字典列表进行排序

如果我们有一个字典列表,并希望根据字典的某个值进行排序:

data = [{'name': 'John', 'age': 45}, {'name': 'Sara', 'age': 30}, {'name': 'Mike', 'age': 35}]
sorted_data = sorted(data, key=lambda x: x['age'])
print(sorted_data)
# 输出: [{'name': 'Sara', 'age': 30}, {'name': 'Mike', 'age': 35}, {'name': 'John', 'age': 45}]

在这个例子中,我们使用了 lambda 函数作为 key 参数,它根据字典的 'age' 值来提取排序的键。

sort是list的方法

在Python中,当你提到sort()方法时,你通常是在谈论列表(list)的一个内置方法,该方法用于就地(in-place)对列表中的元素进行排序,即它会直接修改原列表,而不是返回一个新的排序后的列表。相比之下,sorted()函数会返回一个新的列表,原列表保持不变。

sort()方法有几个参数,但不像sorted()函数那样灵活,因为它主要是为列表设计的。sort()方法的参数包括:

  1. key(可选): 一个函数,用于从每个元素中提取一个用于比较的关键字。它应该接受一个参数(列表中的一个元素)并返回一个用于排序的键。默认值为None,表示直接比较元素本身。

  2. reverse(可选): 布尔值,指定排序顺序。如果设置为True,则列表将以降序排列,默认为False,表示升序排列。

这里没有提到sort()方法的第三个参数,因为实际上它只有这两个参数。

示例

基本使用

my_list = [3, 1, 4, 1, 5, 9, 2]
my_list.sort()
print(my_list)  # 输出: [1, 1, 2, 3, 4, 5, 9]

使用key参数

words = ["banana", "pie", "Python", "apple"]
words.sort(key=len)
print(words)  # 输出: ['pie', 'apple', 'banana', 'Python']

使用reverse参数

my_list = [3, 1, 4, 1, 5, 9, 2]
my_list.sort(reverse=True)
print(my_list)  # 输出: [9, 5, 4, 3, 2, 1, 1]

对字典列表进行排序

如果你有一个字典列表,并希望根据字典的某个值进行排序,你可以使用key参数和一个lambda函数:

data = [{'name': 'John', 'age': 45}, {'name': 'Sara', 'age': 30}, {'name': 'Mike', 'age': 35}]
data.sort(key=lambda x: x['age'])
print(data)
# 输出: [{'name': 'Sara', 'age': 30}, {'name': 'Mike', 'age': 35}, {'name': 'John', 'age': 45}]

注意,sort()方法会修改data列表,而不是创建一个新的列表。如果你需要保留原列表不变,你应该使用sorted()函数。


http://www.kler.cn/a/286831.html

相关文章:

  • 当使用 npm 时,出现 `certificate has expired` 错误通常意味着请求的证书已过期。
  • Qt Creator 15.0.0如何更换主题和字体
  • 5.SQLAlchemy对两张有关联关系表查询
  • C# 网络协议第三方库Protobuf的使用
  • 《安富莱嵌入式周报》第349期:VSCode正式支持Matlab调试,DIY录音室级麦克风,开源流体吊坠,物联网在军工领域的应用,Unicode字符压缩解压
  • 【优选算法】5----有效三角形个数
  • 大数据学习路线基础指南‌
  • SprinBoot+Vue学生选课微信小程序的设计与实现
  • 基于Android Studio 实现通讯录—原创
  • 相机掉帧采集速度慢怎么办巨型帧9014
  • STM32-PWM驱动呼吸灯——HAL库
  • 详解JavaScript
  • springboot配置两个MongoDB
  • 手搓 Java hashmap
  • vscode解决运行程序无法从控制台输入问题
  • Unity(2022.3.41LTS) - 视频
  • 深度解读并发安全集合的原理及源码
  • net_device数据结构简单总结
  • Day 1 : 数据结构
  • nginx配置ssl证书
  • JSON处理库 -- Fastjson
  • 堆《数据结构》
  • 【Unity小工具】Image组件宽度、高度自适应
  • 【大数据算法】时间亚线性算法之:串相等判定算法。
  • Python 全栈系列266 Kafka服务的Docker搭建
  • ctfshow之web58~web71