Python 使用列表的sort()进行多级排序实例演示,list的sort()排序方法使用详解,python3中sort()的cmp自定义排序方法,sort()的逆序、倒叙排序方法

简介: Python 使用列表的sort()进行多级排序实例演示,list的sort()排序方法使用详解,python3中sort()的cmp自定义排序方法,sort()的逆序、倒叙排序方法

   

Python 列表 sort 排序方法使用详解

第一章:常规功能

① sort() 的默认排序

下面是我打印一张图片的各个点的 RGB 颜色并进行默认排序。

# -*- coding:utf-8 -*-
from PIL import Image
pic_path = "./pic/a001.png"
img = Image.open(pic_path)
img = img.convert('RGB')   # 修改颜色通道为RGB
x, y = img.size   # 获得长和宽
d = []
# 设置每个像素点颜色的透明度
for i in range(x):
    for k in range(y):
        color = img.getpixel((i, k))
        d.append(color)
# 默认排序第一列
d.sort()
for i in d:
    print(i)

可以看到,只有第一列进行排序了。

image.png

② sort() 的多级排序实例演示

通过 key 参数可以设定对哪一位进行排序。

# -*- coding:utf-8 -*-
from PIL import Image
pic_path = "./pic/a001.png"
img = Image.open(pic_path)
img = img.convert('RGB')   # 修改颜色通道为RGB
x, y = img.size   # 获得长和宽
d = []
# 设置每个像素点颜色的透明度
for i in range(x):
    for k in range(y):
        color = img.getpixel((i, k))
        d.append(color)
# 获取元素第二列
def get_col_two(elem):
    return elem[1];
# 获取元素第三列
def get_col_three(elem):
    return elem[2];
# 默认排序第一列
d.sort()
# 排序第二列
d.sort(key=get_col_two)
# 排序第三列
d.sort(key=get_col_three)
for i in d:
    print(i)

在元素一排序的基础上再进行元素二的排序,然后再进行元素三的排序。

排序后效果图:

image.png

③ sort() 的逆序、倒叙排序

还有一个参数 reserse 这个是决定正序和逆序的,值为 True 则为逆序排序。

# 获取元素第二列
def get_col_two(elem):
    return elem[1];
# 获取元素第三列
def get_col_three(elem):
    return elem[2];
# 默认排序第一列
d.sort(reverse=True)
# 排序第二列
d.sort(key=get_col_two, reverse=True)
# 排序第三列
d.sort(key=get_col_three, reverse=True)

效果图如下:

image.png

④ sort() 方法的源码

源码如下:

Help on built-in function sort:
sort(*, key=None, reverse=False) method of builtins.list instance
    Sort the list in ascending order and return None.
    The sort is in-place (i.e. the list itself is modified) and stable (i.e. the
    order of two equal elements is maintained).
    If a key function is given, apply it once to each list item and sort them,
    ascending or descending, according to their function values.
    The reverse flag can be set to sort in descending order.
None

第二章:扩展功能

① sort() 的 cmp 自定义排序方法

python2 中有 cmp 参数,python3 中已经给取消了,如果使用会报 TypeError: 'cmp' is an invalid keyword argument for sort() 的错误。

python3 的使用方法如下:

y[1]-x[1] 指的是用第二列进行逆序排序。

from functools import cmp_to_key
def custom_sort(x, y):
    return y[1]-x[1]
# 调用cmp排序
d.sort(key=cmp_to_key(custom_sort))

效果图如下:

image.png

② sort() 的 cmp 引用 lambda 函数实现自定义排序

引用 lambda 函数进行第三列逆序排序。

# 引用lambda函数进行cmp排序
d.sort(key=cmp_to_key(lambda x,y : y[2]-x[2]))

效果图如下:

image.png

喜欢的点个赞❤吧!


目录
相关文章
|
10月前
|
缓存 监控 供应链
唯品会自定义 API 自定义操作深度分析及 Python 实现
唯品会开放平台提供丰富API,支持商品查询、订单管理、促销活动等电商全流程操作。基于OAuth 2.0认证机制,具备安全稳定的特点。通过组合调用基础接口,可实现数据聚合、流程自动化、监控预警及跨平台集成,广泛应用于供应链管理、数据分析和智能采购等领域。结合Python实现方案,可高效完成商品搜索、订单分析、库存监控等功能,提升电商运营效率。
|
10月前
|
缓存 监控 供应链
京东自定义 API 操作深度分析及 Python 实现
京东开放平台提供丰富API接口,支持商品、订单、库存等电商全链路场景。通过自定义API组合调用,可实现店铺管理、数据分析、竞品监控等功能,提升运营效率。本文详解其架构、Python实现与应用策略。
缓存 监控 供应链
364 0
缓存 监控 数据挖掘
236 0
|
缓存 Shell 开发工具
[oeasy]python071_我可以自己做一个模块吗_自定义模块_引入模块_import_diy
本文介绍了 Python 中模块的导入与自定义模块的创建。首先,我们回忆了模块的概念,即封装好功能的部件,并通过导入 `__hello__` 模块实现了输出 "hello world!" 的功能。接着,尝试创建并编辑自己的模块 `my_file.py`,引入 `time` 模块以获取当前时间,并在其中添加自定义输出。
516 5
|
数据挖掘 数据处理 开发者
Python3 自定义排序详解:方法与示例
Python的排序功能强大且灵活,主要通过`sorted()`函数和列表的`sort()`方法实现。两者均支持`key`参数自定义排序规则。本文详细介绍了基础排序、按字符串长度或元组元素排序、降序排序、多条件排序及使用`lambda`表达式和`functools.cmp_to_key`进行复杂排序。通过示例展示了如何对简单数据类型、字典、类对象及复杂数据结构(如列车信息)进行排序。掌握这些技巧可以显著提升数据处理能力,为编程提供更强大的支持。
1011 10
|
Java 机器人 程序员
从入门到精通:五种 List 遍历方法对比与实战指南
小米是一位热爱分享技术的程序员,本文详细介绍了 Java 中遍历 List 的五种方式:经典 for 循环、增强 for 循环、Iterator 和 ListIterator、Stream API 以及 forEach 方法。每种方式都有其适用场景和优缺点,例如 for 循环适合频繁访问索引,增强 for 循环和 forEach 方法代码简洁,Stream API 适合大数据量操作,ListIterator 支持双向遍历。文章通过生动的小故事和代码示例,帮助读者更好地理解和选择合适的遍历方式。
912 2
|
Python
在Python中,自定义函数可以抛出自定义异常
在Python中,自定义函数可以抛出自定义异常
412 5
|
存储 开发者 Python
自定义Python的异常
自定义Python的异常
313 5
|
存储 JSON API
如何自定义Python环境变量?
如何自定义Python环境变量?
630 3

推荐镜像

更多