sort与sorted区别用法

2024-09-02 09:52
文章标签 用法 区别 sorted sort

本文主要是介绍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()函数。

这篇关于sort与sorted区别用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1129634

相关文章

2.1/5.1和7.1声道系统有什么区别? 音频声道的专业知识科普

《2.1/5.1和7.1声道系统有什么区别?音频声道的专业知识科普》当设置环绕声系统时,会遇到2.1、5.1、7.1、7.1.2、9.1等数字,当一遍又一遍地看到它们时,可能想知道它们是什... 想要把智能电视自带的音响升级成专业级的家庭影院系统吗?那么你将面临一个重要的选择——使用 2.1、5.1 还是

Python中@classmethod和@staticmethod的区别

《Python中@classmethod和@staticmethod的区别》本文主要介绍了Python中@classmethod和@staticmethod的区别,文中通过示例代码介绍的非常详细,对大... 目录1.@classmethod2.@staticmethod3.例子1.@classmethod

Golan中 new() 、 make() 和简短声明符的区别和使用

《Golan中new()、make()和简短声明符的区别和使用》Go语言中的new()、make()和简短声明符的区别和使用,new()用于分配内存并返回指针,make()用于初始化切片、映射... 详细介绍golang的new() 、 make() 和简短声明符的区别和使用。文章目录 `new()`

Python中json文件和jsonl文件的区别小结

《Python中json文件和jsonl文件的区别小结》本文主要介绍了JSON和JSONL两种文件格式的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下... 众所周知,jsON 文件是使用php JSON(JavaScripythonpt Object No

oracle中exists和not exists用法举例详解

《oracle中exists和notexists用法举例详解》:本文主要介绍oracle中exists和notexists用法的相关资料,EXISTS用于检测子查询是否返回任何行,而NOTE... 目录基本概念:举例语法pub_name总结 exists (sql 返回结果集为真)not exists (s

结构体和联合体的区别及说明

《结构体和联合体的区别及说明》文章主要介绍了C语言中的结构体和联合体,结构体是一种自定义的复合数据类型,可以包含多个成员,每个成员可以是不同的数据类型,联合体是一种特殊的数据结构,可以在内存中共享同一... 目录结构体和联合体的区别1. 结构体(Struct)2. 联合体(Union)3. 联合体与结构体的

什么是 Ubuntu LTS?Ubuntu LTS和普通版本区别对比

《什么是UbuntuLTS?UbuntuLTS和普通版本区别对比》UbuntuLTS是Ubuntu操作系统的一个特殊版本,旨在提供更长时间的支持和稳定性,与常规的Ubuntu版本相比,LTS版... 如果你正打算安装 Ubuntu 系统,可能会被「LTS 版本」和「普通版本」给搞得一头雾水吧?尤其是对于刚入

Springboot中Jackson用法详解

《Springboot中Jackson用法详解》Springboot自带默认json解析Jackson,可以在不引入其他json解析包情况下,解析json字段,下面我们就来聊聊Springboot中J... 目录前言Jackson用法将对象解析为json字符串将json解析为对象将json文件转换为json

python中json.dumps和json.dump区别

《python中json.dumps和json.dump区别》json.dumps将Python对象序列化为JSON字符串,json.dump直接将Python对象序列化写入文件,本文就来介绍一下两个... 目录1、json.dumps和json.dump的区别2、使用 json.dumps() 然后写入文

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c