广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python列表排序用 sort()和sorted()的区别
  • 537
分享到

python列表排序用 sort()和sorted()的区别

2024-04-02 19:04:59 537人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录1. 是否改变原列表2.参数设置:key 和 reverse3.输入数据类型前言: 内容提要:本文比较了 python 中用于列表排序的两种函数 sort() 和 sorted(

前言:

内容提要:本文比较了 python 中用于列表排序的两种函数 sort() 和 sorted(),帮助您选择合适的排序函数。

对列表排序时,既可以用 List.sort(),也可以用 sorted(List),这两个函数有什么不同呢?如何选择?我以前常常分不清这两个函数,等到程序报错了,才知道 sorted 写成 sort 了,List 不能写在 sort() 括号里。您是否也有这个困惑呢?那就一起通过例子来熟悉这两个函数吧,以后就知道应该怎么使用了。

1. 是否改变原列表

首先应用 List.sort() 对列表排序,

代码示例如下:

letters=['a','dc','ab','D']
print('before sort: letters:',letters)
result1=letters.sort()
print('after sort: result1:',result1)
print('after sort: letters:',letters)

运行结果为:

before sort: letters: ['a', 'dc', 'ab', 'D']
after sort: result1: None
after sort: letters: ['D', 'a', 'ab', 'dc']

可以看到,List.sort() 没有返回值,而是直接改变了原列表。这既是优点也是缺点。说它是优点呢,有时不需要再使用原列表,直接修改原列表可以节约内存空间,尤其当这个列表很大时。而它的缺点也正是因为改了原列表,新手在程序设计时容易忽视这一点,在后续程序中错误地操作列表,导致得不到预计的结果。

再来看一下应用 sorted(List) 对列表排序的效果,

代码示例如下:

letters=['a','dc','ab','D']
print('before sorted: letters:',letters)
result2=sorted(letters)
print('after sorted: result2:',result2)
print('after sorted: letters:',letters)

运行结果为:

before sorted: letters: ['a', 'dc', 'ab', 'D']
after sorted: result2: ['D', 'a', 'ab', 'dc']
after sorted: letters: ['a', 'dc', 'ab', 'D']

可以看到,sorted(List) 返回一个排序好的新列表,原列表不变。

依据上述对比,在选择排序函数时,我们需要考虑两点:

  • 1.是否希望改变原列表,如果是,选择 sort()。如果原列表不能修改,选择 sorted()。
  • 2.注意使用函数的返回值,或者说排序好的列表存在哪里。比如代码为 list2=list1.sort() 或者 function(list1.sort()),那么 list2 其实是 None,而不是排序好的列表。同理,function() 函数的输入也是 None。list1 才是排序好的列表。

2.参数设置:key 和 reverse

看上面例子中列表 letters 的排序结果,发现 D 居然排在 a 的前面?这是因为 ASCII 码中大写英文字母排在小写英文字母的前面。那么,如果我们想实现按字母顺序,不区分大小写的排序,应该怎么办呢?

方法:可以设置 key 参数,对 sort() 和 sorted() 都适用。

比如:设置key=str.lower,就是按字符的小写字母形式排序。

代码示例如下:

letters=['a','dc','ab','D']
letters.sort(key=str.lower)
print(letters)

运行结果为:

['a', 'ab', 'D', 'dc']

此外,默认是按升序排列。也可以设置reverse=True,就是按降序排列。这一参数同样是对 sort() 和 sorted() 都适用。下面的代码示例同时设置了 key 和 reverse 参数。

letters=['a','dc','ab','D']
result=sorted(letters,key=str.lower,reverse=True)
print(result)

运行结果为:

['dc', 'D', 'ab', 'a']

3.输入数据类型

List.sort() 是列表对象(object)的一个方法(method),因此只能用于列表。

sorted() 函数是 Python 语言的内置函数,可以用于 iterables,包括 列表(List),元组(Tuple),字典(Dict)等等。iterable 对象有一个特点,就是可以用在循环 for 语句中(例如上面例子的列表 letters,可以用在 for 语句中:for e in letters:)。

下面我们来看看不同数据类型应用 sorted() 函数的例子。需要注意的是,虽然 sorted() 的输入可以有多种类型,但是输出都是排序好的列表。

输入为元组(Tuple)时:

letters=('a','dc','ab','D')
result=sorted(letters)
print(result)

运行结果为:

['D', 'a', 'ab', 'dc']

输入为字符串(Str)时:

letters='dasf'
result=sorted(letters)
print(result)

运行结果为:

['a', 'd', 'f', 's']

从结果可以看出,输入为字符串时,输出为排序好的字符列表,单个字符为列表的一个元素。

输入为字典(Dict)时:

letters={'b':1,'a':3,'d':2,'c':1}
result=sorted(letters)
print(result)

运行结果为:

['a', 'b', 'c', 'd']

从结果可以看出,sorted() 函数输出的结果是对letters.key() 排序得到的列表。

参考:https://docs.python.org/3/howto/sorting.html

到此这篇关于python列表排序用 sort()和sorted()的区别的文章就介绍到这了,更多相关python列表排序内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python列表排序用 sort()和sorted()的区别

本文链接: https://www.lsjlt.com/news/143357.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python列表排序用 sort()和sorted()的区别
    目录1. 是否改变原列表2.参数设置:key 和 reverse3.输入数据类型前言: 内容提要:本文比较了 Python 中用于列表排序的两种函数 sort() 和 sorted(...
    99+
    2022-11-13
  • Python 列表排序方法reverse、sort、sorted详解
    python语言中的列表排序方法有三个:reverse反转/倒序排序、sort正序排序、sorted可以获取排序后的列表。在更高级列表排序中,后两中方法还可以加入条件参数进行排序。 reverse...
    99+
    2022-06-04
    详解 方法 列表
  • Python列表排序方法reverse、sort、sorted详解
    python语言中的列表排序方法有3个: reverse反转/倒序排序 sort正序排序 sorted可以获取排序后的列表 在更高级列表排序中,后两中方法还可以加入条件参数进行排...
    99+
    2022-11-12
  • Python中sort()和sorted()的区别
    一、使用对象不同 sort()是列表对象的方法,只能用于列表的排序。而sorted()是Python的内建函数,可以对任何可迭代对象进行排序,包括列表、元组、字典等。 二、排序方式不同 sort()方法默认是在原列表上进行...
    99+
    2023-10-29
    区别 Python sort
  • python中sort()和sorted()的区别及用法实例
    目录一、二、python中输入字符串转列表的注意问题总结本文主要讲sort与sorted的主要区别,以便正确使用 一、 sort()只能用于列表;sorted()可以用于所有可迭代对...
    99+
    2022-11-11
  • 详解Python中sorted()和sort()的使用与区别
    目录sort()方法是什么如何妙用sorted() 方法总结在 Python 中,你可以使用 sorted() 方法或 sort() 方法对数据进行排序。 在本文中,我将提供 sor...
    99+
    2022-11-13
  • python中的 sorted()函数和sort()方法区别
    目录1.sort()2.sorted()3.sorted()操作列表4.sorted()排序字典①参数key:使用lambda定义②参数key:使用itemgetter直接生成1.s...
    99+
    2022-11-13
  • Python排序sort()函数和sorted()函数怎么使用
    本文小编为大家详细介绍“Python排序sort()函数和sorted()函数怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python排序sort()函数和sorted()函数怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路...
    99+
    2023-07-06
  • python使用sorted函数对列表进行排序
    在python中使用sorted函数对列表进行排序的方法sorted:sorted()函数的作用是对所有可迭代的对象进行排序操作。sorted()函数语法:sorted(iterable, key=None, reverse=False) ...
    99+
    2022-10-22
  • 使用Python的sorted()函数对列表进行排序
    使用Python的sorted()函数对列表进行排序Python是一种功能强大的编程语言,提供了许多内置的函数和方法来帮助开发人员处理不同的任务。其中一个非常有用的函数是sorted()函数,它可以用于对列表进行排序。sorted()函数接...
    99+
    2023-11-18
    Python sorted() 列表排序
  • Python列表排序 list.sort方法和内置函数sorted用法
    很多时候我们获取到一个列表后,这个列表并不满足我们的需求,我们需要的是一个有特殊顺序的列表. 这时候就可以使用list.sort方法和内置函数sorted,本文就是介绍list.so...
    99+
    2022-11-11
  • Python列表排序 list.sort的用法和内置函数sorted的用法是什么
    本篇内容主要讲解“Python列表排序 list.sort的用法和内置函数sorted的用法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python列表排序 list.sort的用法和内...
    99+
    2023-06-14
  • 关于Python列表元素排序操作sort()、min()、max()函数用法
    列表对象中提供了 sort0 方法,该方法用于对原列表中的元素进行排序,排序后原列表中的元素顺序将发生改变。 其语法格式如下: listname.sort(key=None, rev...
    99+
    2023-05-17
    Python列表 Python列表元素排序 Python列表函数
  • Python中列表和元组的区别
    Python中列表和元组的区别 数据结构定义符号是否可变存储空间能否作为字典的键列表(list)[        ]可变,动态内存较大不能元组(tuple)(        )不可变,静态内存较小能         在Python中...
    99+
    2023-09-07
    python 数据结构
  • python中列表(list)和元组(tuple)的区别
    这期内容当中小编将会给大家带来有关python中列表(list)和元组(tuple)的区别,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。列表列表是动态的,长度可以改变,可以随意增加,修改或删除元素。初始化...
    99+
    2023-06-14
  • Python中的列表和元组的区别是什么?
    Python中的列表和元组是两种常用的数据结构,它们都可以用来存储一组数据。然而,它们在创建、操作和使用上有一些重要的区别。首先,列表使用方括号 [] 来创建,而元组使用圆括号 () 来创建。例如:# 创建一个列表 list_example...
    99+
    2023-10-22
    Python 元组 区别:列表
  • Python中列表和元组的使用方法和区别详解
    一、二者区别 列表: 1.可以增加列表内容 append 2.可以统计某个列表段在整个列表中出现的次数 count 3.可以插入一个字符串,并把整个字符串的每个字母拆分当作一个列表段追加到列表当中 ...
    99+
    2022-06-04
    使用方法 详解 区别
  • python中列表和numpy数组的区别是什么
    这期内容当中小编将会给大家带来有关python中列表和numpy数组的区别是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学...
    99+
    2023-06-14
  • 浅析Python中元祖、列表和字典的区别
    1、列表(list)   list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目。   列表中的项目应该包括在方括号中,这样Python就知道你是指明一个列表。一旦你创建了一个列表,就...
    99+
    2022-06-04
    元祖 字典 区别
  • Python中列表遍历使用range和enumerate的区别讲解
    目录前言分析 range函数enumerate函数前言 两者的比较只是编程实现上的差异,请不要绝对化、教条化。这里只从技术方面讨论。这种区别非常细,局限于特定场合。 在Python编...
    99+
    2022-12-26
    Python中列表遍历 Python range和enumerate
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作