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

喜欢的点个赞❤吧!


目录
相关文章
|
12天前
|
Python
python魔法方法如何应用
【4月更文挑战第12天】这个Python示例展示了类继承和方法重写。`Student`类继承自`Person`,并覆盖了`say_hello`方法。通过`super().__init__(name)`调用父类的`__init__`初始化`name`属性,`Student`添加了`age`属性,并在重写的`say_hello`中使用。创建`Student`实例`student`并调用其`say_hello`,输出定制的问候信息。
19 1
|
4天前
四种解决”Arg list too long”参数列表过长的办法
这些方法都可以帮助你避免因参数列表过长而导致的错误。选择方法取决于具体情况和需求。
9 0
|
5天前
|
存储 关系型数据库 MySQL
Python搭建代理IP池实现存储IP的方法
Python搭建代理IP池实现存储IP的方法
|
5天前
|
Python
Python动态IP代理防止被封的方法
Python动态IP代理防止被封的方法
|
5天前
|
数据采集 存储 安全
python检测代理ip是否可用的方法
python检测代理ip是否可用的方法
|
7天前
|
数据可视化 测试技术 Python
在Python和R中使用交叉验证方法提高模型性能
在Python和R中使用交叉验证方法提高模型性能
13 0
|
7天前
|
存储 监控 开发工具
对象存储OSS产品常见问题之python sdk中的append_object方法支持追加上传xls文件如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
38 9
|
7天前
|
Python
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
46 0
|
7天前
|
索引 容器
06-python数据容器-list列表定义/list的10个常用操作/列表的遍历/使用列表取出偶数
06-python数据容器-list列表定义/list的10个常用操作/列表的遍历/使用列表取出偶数
|
13天前
|
机器学习/深度学习 人工智能 算法