Python对列表进行排序的五种方法示例代码

 更新时间:2025年05月06日 09:55:10   作者:kdayjj966  
这篇文章主要给大家介绍了关于Python对列表进行排序的五种方法,分别是sort()、sorted()、lambda表达式、reverse()和自定义排序算法,这些方法各有特点,文中给出了详细的代码示例,需要的朋友可以参考下

前言

在 Python 中,排序是一个非常常见且重要的操作,尤其是对列表的排序。Python 提供了多种方法来实现排序操作,从内置函数到自定义排序逻辑,都可以方便地满足不同的需求。以下将介绍 Python 对列表进行排序的 5 种方法,并配以示例代码。

方法 1:使用 sort() 方法(原地排序)

list.sort() 是列表的一个内置方法,它会直接对列表本身进行排序(即原地排序,不会返回新的列表)。它支持两种可选参数:

  • key:指定排序的依据(通常是一个函数)。
  • reverse:是否降序,默认值为 False

特点:

  • 修改原列表,无返回值。
  • 效率高,适合处理较大的列表。

示例代码:

# 示例 1:默认升序排序
nums = [5, 2, 9, 1, 5, 6]
nums.sort()  # 原地排序
print(nums)  # 输出:[1, 2, 5, 5, 6, 9]

# 示例 2:降序排序
nums = [5, 2, 9, 1, 5, 6]
nums.sort(reverse=True)
print(nums)  # 输出:[9, 6, 5, 5, 2, 1]

# 示例 3:基于字符串长度排序
words = ["apple", "banana", "kiwi", "cherry"]
words.sort(key=len)
print(words)  # 输出:['kiwi', 'apple', 'cherry', 'banana']

方法 2:使用 sorted() 函数(返回新列表)

sorted() 是一个内置函数,用于对可迭代对象进行排序。与 sort() 不同,sorted() 不会修改原列表,而是返回一个新的排序后的列表。

特点:

  • 不改变原列表,返回新列表。
  • 适合需要保留原列表的场景。

示例代码:

# 示例 1:默认升序排序
nums = [5, 2, 9, 1, 5, 6]
sorted_nums = sorted(nums)
print(sorted_nums)  # 输出:[1, 2, 5, 5, 6, 9]
print(nums)         # 原列表不变,输出:[5, 2, 9, 1, 5, 6]

# 示例 2:降序排序
nums = [5, 2, 9, 1, 5, 6]
sorted_nums = sorted(nums, reverse=True)
print(sorted_nums)  # 输出:[9, 6, 5, 5, 2, 1]

# 示例 3:基于自定义规则排序
words = ["apple", "banana", "kiwi", "cherry"]
sorted_words = sorted(words, key=len)
print(sorted_words)  # 输出:['kiwi', 'apple', 'cherry', 'banana']

方法 3:使用 lambda 表达式进行自定义排序

无论是 sort() 还是 sorted(),都可以通过 key 参数指定排序依据。这里常使用 lambda 表达式来定义自定义排序规则。

特点:

  • 灵活性高,可根据具体需要定义排序规则。
  • 常用于复杂的排序场景。

示例代码:

# 基于元组的第二个元素排序
data = [(1, 3), (4, 1), (2, 2), (3, 4)]
data.sort(key=lambda x: x[1])  # 按元组的第二个元素排序
print(data)  # 输出:[(4, 1), (2, 2), (1, 3), (3, 4)]

# 按字符串的最后一个字母排序
words = ["apple", "banana", "kiwi", "cherry"]
sorted_words = sorted(words, key=lambda x: x[-1])  # 按单词最后一个字母排序
print(sorted_words)  # 输出:['banana', 'apple', 'cherry', 'kiwi']

方法 4:使用 reverse() 方法倒序排列

reverse() 是列表的一个内置方法,用于将列表中的元素顺序颠倒。需要注意,它不是真正的排序,而是直接将当前顺序反转。

特点:

  • 修改原列表,直接反转列表顺序。
  • 更适合已经排好序的列表。

示例代码:

# 示例:将列表倒序排列
nums = [1, 2, 3, 4, 5]
nums.reverse()
print(nums)  # 输出:[5, 4, 3, 2, 1]

方法 5:自定义排序算法

当内置的 sort() 或 sorted() 无法满足需求时,可以实现自己的排序算法(如冒泡排序、快速排序等)。以下以 冒泡排序 为例。

特点:

  • 更适合学习和理解排序算法的实现原理。
  • 实际开发中,推荐使用内置排序方法,效率更高。

示例代码:冒泡排序

def bubble_sort(nums):
    n = len(nums)
    for i in range(n):
        for j in range(0, n-i-1):
            if nums[j] > nums[j+1]:  # 比较相邻的元素
                nums[j], nums[j+1] = nums[j+1], nums[j]  # 交换位置

# 测试代码
nums = [5, 2, 9, 1, 5, 6]
bubble_sort(nums)
print(nums)  # 输出:[1, 2, 5, 5, 6, 9]

总结与对比

方法适用场景是否修改原列表灵活性性能表现
sort()原地排序,不需要保存原列表较高快速(Timsort 算法)
sorted()保留原列表,生成新排序列表较高快速(Timsort 算法)
lambda 自定义排序需要复杂规则排序的场景可选非常高依赖于 sort() 或 sorted()
reverse()简单倒序排列一般快速
自定义排序算法学习排序原理或特殊场景可选非常高根据实现算法而定

最佳实践建议

  • 使用内置方法sort() 和 sorted() 是排序的首选方法,性能高且易用,适合大多数场景。
  • 自定义排序规则:通过 key 参数和 lambda 表达式可以轻松实现复杂排序逻辑。
  • 特殊场景使用自定义算法:在了解排序算法原理或处理特殊需求时,可以自己实现排序算法,但性能可能不如内置方法。

通过以上 5 种方法,你可以轻松地对列表进行排序,满足各种实际需求!

到此这篇关于Python对列表进行排序的五种方法的文章就介绍到这了,更多相关Python列表排序方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • pyinstaller使用大全

    pyinstaller使用大全

    这篇文章主要介绍了pyinstaller使用大全,pyinstaller可以方便地将脚本编译成exe,本文结合实例代码给大家详细讲解,需要的朋友可以参考下
    2023-02-02
  • Python函数参数的4种方式

    Python函数参数的4种方式

    本文主要介绍了Python函数参数的4种方式,主要包括必选参数,默认参数,可选参数,关键字参数,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • python对日志进行处理的实例代码

    python对日志进行处理的实例代码

    本篇文章给大家分享了关于python处理日志的方法以及相关实例代码,有兴趣的朋友们学习下。
    2018-10-10
  • 使用Python+wxPython打造一个Skill管理器

    使用Python+wxPython打造一个Skill管理器

    如果你用过 Claude Code 或 OpenCode,一定知道 Skills 机制,下面我们就来详细介绍一下如何使用Python打造一个简单的Skill管理器,感兴趣的小伙伴可以了解下
    2026-03-03
  • python 匹配url中是否存在IP地址的方法

    python 匹配url中是否存在IP地址的方法

    今天小编就为大家分享一篇python 匹配url中是否存在IP地址的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • pandas 实现某一列分组,其他列合并成list

    pandas 实现某一列分组,其他列合并成list

    这篇文章主要介绍了pandas 实现某一列分组,其他列合并成list的案例。具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 使用Python Flask实现简易文件上传功能

    使用Python Flask实现简易文件上传功能

    在平时工作中,文件上传是一项常见的需求,例如将应用异常时通过脚本生成的dump文件收集起来进行分析,但实现起来却可能相当复杂,在本文中,我们将探讨如何使用Flask实现文件上传功能,编写Dockerfile将应用程序通过docker部署,需要的朋友可以参考下
    2024-05-05
  • Python Fire创建简单的命令行接口

    Python Fire创建简单的命令行接口

    Python Fire是一个开源库,它能够自动生成命令行接口,让Python程序变得更加友好和易用,本文主要为大家介绍了Python Fire如何根据Python函数自动生成命令行接口,感兴趣的可以了解下
    2023-11-11
  • 高效测试用例组织算法pairwise之Python实现方法

    高效测试用例组织算法pairwise之Python实现方法

    下面小编就为大家带来一篇高效测试用例组织算法pairwise之Python实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • 利用python模拟sql语句对员工表格进行增删改查

    利用python模拟sql语句对员工表格进行增删改查

    这篇文章主要给大家介绍了关于利用python模拟sql语句实现对员工表格进行增删改查的相关资料,文中介绍了详细的需求以及示例代码,对大家的理解和学习具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-07-07

最新评论