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

相关文章

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

native和static native区别

本文基于Hello JNI  如有疑惑,请看之前几篇文章。 native 与 static native java中 public native String helloJni();public native static String helloJniStatic();1212 JNI中 JNIEXPORT jstring JNICALL Java_com_test_g

leetcode-23Merge k Sorted Lists

带头结点。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/public class Solution {public ListNode mergeKLists

bytes.split的用法和注意事项

当然,我很乐意详细介绍 bytes.Split 的用法和注意事项。这个函数是 Go 标准库中 bytes 包的一个重要组成部分,用于分割字节切片。 基本用法 bytes.Split 的函数签名如下: func Split(s, sep []byte) [][]byte s 是要分割的字节切片sep 是用作分隔符的字节切片返回值是一个二维字节切片,包含分割后的结果 基本使用示例: pa

Android fill_parent、match_parent、wrap_content三者的作用及区别

这三个属性都是用来适应视图的水平或者垂直大小,以视图的内容或尺寸为基础的布局,比精确的指定视图的范围更加方便。 1、fill_parent 设置一个视图的布局为fill_parent将强制性的使视图扩展至它父元素的大小 2、match_parent 和fill_parent一样,从字面上的意思match_parent更贴切一些,于是从2.2开始,两个属性都可以使用,但2.3版本以后的建议使

Collection List Set Map的区别和联系

Collection List Set Map的区别和联系 这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文章。 有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否

javascript中break与continue的区别

在javascript中,break是结束整个循环,break下面的语句不再执行了 for(let i=1;i<=5;i++){if(i===3){break}document.write(i) } 上面的代码中,当i=1时,执行打印输出语句,当i=2时,执行打印输出语句,当i=3时,遇到break了,整个循环就结束了。 执行结果是12 continue语句是停止当前循环,返回从头开始。

maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令

maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令 在日常的工作中由于各种原因,会出现这样一种情况,某些项目并没有打包至mvnrepository。如果采用原始直接打包放到lib目录的方式进行处理,便对项目的管理带来一些不必要的麻烦。例如版本升级后需要重新打包并,替换原有jar包等等一些额外的工作量和麻烦。为了避免这些不必要的麻烦,通常我们

ActiveMQ—Queue与Topic区别

Queue与Topic区别 转自:http://blog.csdn.net/qq_21033663/article/details/52458305 队列(Queue)和主题(Topic)是JMS支持的两种消息传递模型:         1、点对点(point-to-point,简称PTP)Queue消息传递模型:         通过该消息传递模型,一个应用程序(即消息生产者)可以

深入探讨:ECMAScript与JavaScript的区别

在前端开发的世界中,JavaScript无疑是最受欢迎的编程语言之一。然而,很多开发者在使用JavaScript时,可能并不清楚ECMAScript与JavaScript之间的关系和区别。本文将深入探讨这两者的不同之处,并通过案例帮助大家更好地理解。 一、什么是ECMAScript? ECMAScript(简称ES)是一种脚本语言的标准,由ECMA国际组织制定。它定义了语言的语法、类型、语句、