python的内置函数(1)----sort和sorted()函数的区别

本文探讨了Python中sort和sorted()的区别。sort是列表特有的排序方法,不返回值;sorted()是内置函数,适用于各种可迭代对象,返回排序后的列表。sorted()允许设置cmp、key和reverse参数进行自定义排序。文章通过实例展示了如何对字符串进行字典序排列。

一、sort和sorted的区别

sort 是应用在 列表上的方法,sorted 可以对所有可迭代的对象进行排序操作。
sorted()是python的内置函数,并不是可变对象(列表、字典)的特有方法,sorted()函数需要一个参数(参数可以是列表、字典、元组、字符串),无论传递什么参数,都将返回一个以列表为容器的返回值,如果是字典将返回键的列表。

二、语法

1.sort的语法

list.sort()

在这里插入图片描述
无参数,无返回值。
2.sorted的语法:

sorted(iterable, cmp=None, key=None, reverse=False)

参数说明: iterable – 可迭代对象。
cmp – 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse – 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

==list: ==
在这里插入图片描述
sorted会返会一个list副本,同时将原来list的值改变了可将这个返回的值赋给其他变量。
dict:
在这里插入图片描述
即sorted(dict)时,是按

Python中的`sort`函数`sorted`函数都是用于对数据进行排序的工具,但它们在使用方式功能上有一些区别。以下是详细的解释示例代码。 --- ### 1. `sort` 方法 - **所属对象**:`sort` 是列表(`list`)类型的一个方法。 - **作用**:直接对列表本身进行原地排序(in-place),不会创建新的列表。 - **返回值**:`None`,因为它是原地修改。 - **语法**: ```python list.sort(key=None, reverse=False) ``` - `key`:指定一个函数,用于提取每个元素的比较关键字。 - `reverse`:布尔值,`True`表示降序排列,`False`表示升序排列。 #### 示例代码 ```python # 定义一个列表 numbers = [5, 2, 9, 1, 5, 6] # 使用 sort 方法进行升序排序 numbers.sort() print("升序排序结果:", numbers) # 输出: [1, 2, 5, 5, 6, 9] # 使用 sort 方法进行降序排序 numbers.sort(reverse=True) print("降序排序结果:", numbers) # 输出: [9, 6, 5, 5, 2, 1] ``` --- ### 2. `sorted` 函数 - **适用范围**:`sorted` 是一个内置函数,可以对任何可迭代对象(如列表、元组、字典等)进行排序,并返回一个新的排序后的列表。 - **返回值**:返回一个新的列表,原始数据不受影响。 - **语法**: ```python sorted(iterable, key=None, reverse=False) ``` - 参数与`sort`方法相同。 #### 示例代码 ```python # 定义一个元组 data = (5, 2, 9, 1, 5, 6) # 使用 sorted 函数进行升序排序 result = sorted(data) print("升序排序结果:", result) # 输出: [1, 2, 5, 5, 6, 9] # 使用 sorted 函数进行降序排序 result = sorted(data, reverse=True) print("降序排序结果:", result) # 输出: [9, 6, 5, 5, 2, 1] # 原始数据未被修改 print("原始数据:", data) # 输出: (5, 2, 9, 1, 5, 6) ``` --- ### 3. `sort` `sorted` 的主要区别 | 特性 | `sort` 方法 | `sorted` 函数 | |-------------------|-------------------------------------|------------------------------------| | **适用对象** | 仅适用于列表 | 适用于任何可迭代对象 | | **是否修改原数据**| 是,直接修改原列表 | 否,返回新列表,原数据不变 | | **返回值** | `None` | 返回排序后的新列表 | --- ### 4. 自定义排序规则 可以通过`key`参数自定义排序规则。例如,按字符串长度排序: #### 示例代码 ```python # 定义一个字符串列表 words = ["apple", "banana", "cherry", "date"] # 按字符串长度升序排序 sorted_words = sorted(words, key=len) print("按长度升序排序:", sorted_words) # 输出: ['date', 'apple', 'banana', 'cherry'] # 按字符串长度降序排序 sorted_words = sorted(words, key=len, reverse=True) print("按长度降序排序:", sorted_words) # 输出: ['banana', 'cherry', 'apple', 'date'] ``` --- ### 解释 - **`key` 参数**:`key`是一个函数,用于从每个元素中提取一个值作为排序依据。例如,`key=len`表示按字符串长度排序。 - **`reverse` 参数**:控制排序顺序,`True`为降序,`False`为升序。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值