当前位置: 首页 > news >正文

【博学谷学习记录】超强总结,用心分享丨人工智能 Python基础 个人学习总结之列表排序

目录

    • 前言
    • 简述
    • list.sort()
      • 语法
      • 返回值
      • 实例
        • 无参
        • 参数key
        • 参数reverse
    • sorted()
      • 语法
      • 返回值
      • 实例
        • 无参
        • 参数key
        • 参数reverse
      • operator.itemgetter
        • 功能简述
        • 实例
    • List.sort与sored区别
    • sorted原理:Timsort算法
    • 扩展list原理
      • 数据结构
    • 心得

前言

经过一周的学习,对Python基础部分有了一定的了解。
在学习Python中list时,了解到了列表排序,于是对于列表排序有了兴趣,本文总结了Python列表排序的一些知识。

简述

Python中针对列表排序有两个方法:

  1. 使用list.sort()
  2. 使用内置函数sorted()
    列表排序

list.sort()

语法

list.sort(key=None, reverse=False)
参数名含义是否必填
key主要是用来进行比较的元素,指定可迭代对象中的一个元素来进行排序
参数来源:list,参数数量:1
非必填
reverse排序规则,True代表降序, False代表升序,默认为False非必填

返回值

返回None

实例

无参

tempList = [6, 5, 7, 4, 3, 8, 2, 9, 1]
tempList.sort()
print(tempList)  # tempList = [1, 2, 3, 4, 5, 6, 7, 8, 9]

参数key

def get_value_sum(parm_dict):return sum(dict(parm_dict).values())tempList = [{'周芷若': 70, '宋青书': 20}, {'张无忌': 80}, {'杨逍': 50}, {'赵敏': 20}, {'张三丰': 100}]
tempList.sort(key=get_value_sum)
print(tempList)  # tempList = [{'赵敏': 20}, {'杨逍': 50}, {'张无忌': 80}, {'周芷若': 70, '宋青书': 20}, {'张三丰': 100}]

参数reverse

tempList = [6, 5, 7, 4, 3, 8, 2, 9, 1]
tempList.sort(reverse=True)
print(tempList)  # tempList = [9, 8, 7, 6, 5, 4, 3, 2, 1]

sorted()

语法

sorted(iterable, key=None, reverse=False)
参数名含义是否必填
iterable可迭代对象必填
key主要是用来进行比较的元素,指定可迭代对象中的一个元素来进行排序。
参数来源:iterable,参数数量:1
非必填
reverse排序规则,True代表降序, False代表升序,默认为False非必填

返回值

返回排序后的列表。

实例

无参

tempList = [6, 5, 7, 4, 3, 8, 2, 9, 1]
sortedList = sorted(tempList)
print(sortedList)  # sortedList=[1, 2, 3, 4, 5, 6, 7, 8, 9]

参数key

def get_value_sum(parm_dict):return sum(dict(parm_dict).values())tempList = [{'周芷若': 70, '宋青书': 20}, {'张无忌': 80}, {'杨逍': 50}, {'赵敏': 20}, {'张三丰': 100}]
sortedList = sorted(tempList, key=get_value_sum)
print(sortedList)  # sortedList = [{'赵敏': 20}, {'杨逍': 50}, {'张无忌': 80}, {'周芷若': 70, '宋青书': 20}, {'张三丰': 100}]

参数reverse

tempList = [6, 5, 7, 4, 3, 8, 2, 9, 1]
sortedList = sorted(tempList, reverse=True)
print(sortedList)  # sortedList = [9, 8, 7, 6, 5, 4, 3, 2, 1]

operator.itemgetter

官方文档:https://docs.python.org/2/library/operator.html#module-operator

功能简述

选择指定的元组值作为key

实例

from operator import itemgettertempDict = {'data1': 3, 'data2': 1, 'data3': 2, 'data4': 4}
sortedList = sorted(tempDict.items(), key=itemgetter(1), reverse=True)
print(sortedList)  # sortedList=[('data4', 4), ('data1', 3), ('data3', 2), ('data2', 1)]

List.sort与sored区别

  1. list.sort()只能对list类型进行排序。sorted()可以对list、dict、set类型排序
  2. list.sort()直接改变原list。sorted()不改变原list,排序后的结果作为返回值

注意点:sorted()对dict排序时默认使用key作为排序元素

tempDict={1: ‘e’, 3: ‘m’, 5: ‘e’, 9: ‘a’}

sorted(tempDict) 结果为[1, 3, 5, 9]

sorted原理:Timsort算法

待学习了解后补充

扩展list原理

数据结构

ob_item是用来保存元素的指针数组

allocated 是指申请的内存的槽的个数

typedef struct {PyObject_VAR_HEADPyObject **ob_item;Py_ssize_t allocated;
} PyListObject;

简述:有一个指针数组用来保存列表元素的指针,和一个可以在列表中放多少元素的标记.

insert/append过程简述

list先分配一个对象的内存块, 再给这个对象分配一个内存槽的大小。

这个内存槽的大小不等于元素的个数, 会比元素个数大一点,目的就是为了防止在每次添加元素的时候都去调用分配内存的函数,或者涉及到数据的搬移

pop/remove过程简述

同样在pop或删除元素时, 如果发现元素个数已经小于槽数的一半,就会缩减槽的大小

心得

主要学习了python语法的一些基础,原来做Java开发,排序作为一个重要部分,也是算法中常使用的一个组成,特此做一下总结,不过感觉python的语法在编码上更轻松一些

相关文章:

【博学谷学习记录】超强总结,用心分享丨人工智能 Python基础 个人学习总结之列表排序

目录前言简述list.sort()语法返回值实例无参参数key参数reversesorted()语法返回值实例无参参数key参数reverseoperator.itemgetter功能简述实例List.sort与sored区别sorted原理:Timsort算法扩展list原理数据结构心得前言 经过一周的学习,对Python基础部…...

深度讲解React Props

一、props的介绍 当React遇到的元素是用户自定义的组件&#xff0c;它会将JSX属性作为单个对象传递给该组件&#xff0c;这个对象称之为“props”。 函数声明的组件&#xff0c;会接受一个props形参&#xff0c;获取属性传递的参数 function ComponentA(props) { return <…...

WebRTC现状以及多人视频通话分析

1.WebRTC 概述WebRTC&#xff08;网页实时通信技术&#xff09;是一系列为了建立端到端文本或者随机数据的规范&#xff0c;标准&#xff0c;API和概念的统称。这些对等端通常是由两个浏览器组成&#xff0c;但是WebRTC也可以被用于在客户端和服务器之间建立通信连接&#xff0…...

【Windows】Windows下wget的安装与环境变量配置

1 wget安装 GNU Wget常用于使用命令行下载网络资源&#xff08;包括但不限于文件、网页等&#xff09;。 GNU Wget官网&#xff1a;GNU Wget GNU Wget for Windows&#xff1a;GNU Wget for Windows 安装时首先下载主安装包&#xff1a;Complete package, except sources&…...

密码学基础概念

把一段原始数据通过某种算法处理成另外一种数据&#xff08;原始数据为明文&#xff0c;处理后的数据为密文&#xff09;。明文->密文&#xff1a;称之为加密。密文->明文&#xff1a;称之为解密。 在加密过程中我们需要知道下面的这些概念&#xff1a; 1&#xff09;明文…...

科技巨头争相入局,卫星通信领域将迎来怎样的发展?

近年来&#xff0c;全球卫星通信产业进入了一个高速发展的阶段 与卫星通信相关的新技术和新应用不断出现&#xff0c;成为了媒体报道的热点&#xff0c;也引起了公众的广泛关注。 尤其是刚刚过去的2022年&#xff0c;华为和苹果公司分别发布了搭载卫星通信技术的手机&#xf…...

银行软件测试面试题目总结,希望可以帮到你

目录 一、根据题目要求写出具体LINUX操作命令 二、JMETER题目 三、根据题目要求写出具体SQL语句 总结感谢每一个认真阅读我文章的人&#xff01;&#xff01;&#xff01; 重点&#xff1a;配套学习资料和视频教学 一、根据题目要求写出具体LINUX操作命令 1、分别写出一种…...

MySQL数据定义

系列文章目录前言创建数据库删除数据库修改数据库修改表结构修改表中列修改表中约束创建表删除表前言 创建数据库 创建数据库CREATE DATABASE 数据库名 使用数据库use 数据库名; MySQL数据库如何建表 删除数据库 删除数据库语句DROP DATABASE 数据库名 这条语句会删除数据…...

跨设备文件传输工具横评

文章目录对比QQ微信SnapDropLocalSendIntelUnisonLANDropTailscaleAirDroidSendAnywhere参考文献对比 传输速度测试条件大致相同&#xff0c;文件大小约为 100 MB 工具优点缺点传输速度备注QQ支持断点续传不要求同一局域网需要安装1.81 MB/s微信方便需要安装不支持大文件传完还…...

Oracle通过SQL找出ID不连续的位置

文章目录1 前言2 SQL3 结语1 前言 工作中要求我找到 ID 不连续的地方, 然后拿这个 ID , 给数据库里面 INSERT 一条数据. 比如: ID备注… 省略连续的部分232425就是想找到这里断开的地方, 下一个可以 INSERT 的 ID 就是 2674915751157512075122… 省略连续的部分 2 SQL 假设数据…...

学习一个Java项目

你想学习一个项目&#xff0c;一行一行去看代码 效率很低&#xff0c;看了就忘了 理清学习的思路 项目分为两部分&#xff1a;业务和代码 一、如何熟悉业务 1、看项目的文档&#xff08;需求概要文档、设计文档&#xff09; 2、同事/前辈言传身教 3、自己动手使用功能 …...

《数据库系统概论》学习笔记——第三章 关系数据库标准语言SQL

教材为数据库系统概论第五版&#xff08;王珊&#xff09; 最重量级的一章。从后续的学习&#xff0c;基本所有实验&#xff0c;大作业和考试都会涉及SQL&#xff0c;SQL实际上是有很多变化的&#xff0c;书上讲的只是最基本的&#xff08;做了大作业才知道SQL能有这么多变化&a…...

linux shell 入门学习笔记17 mysql脚本开发

开发mysql监控脚本 需要了解的命令&#xff1a; ss命令展示 xiao123xiao123:~/Downloads/shscripts$ ss -tunlp Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process udp UNCONN 0 0 …...

产品新说 | 指标的异常检测怎么做,能更好配合业务变化(二)

前言&#xff1a;上期分享我们提到了指标异常检测实践要素中的三个方面&#xff1a;以面对业务变动为前提&#xff0c;确定业务波动是周期性还是非周期性&#xff0c;进而选对算法&#xff1b;通过确认业务的常规指标&#xff0c;确定异常方向进行监测&#xff08;上基带 / 下基…...

华为OD机试题,用 Java 解【最短耗时】问题

最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…...

mysql数据库常见面试题

慢查询排查优化 排查 slow_query_log设置为on&#xff0c;就会记录慢查询sql&#xff1b;long_query_time可以设置慢查询sql的阈值时间&#xff1b;slow_query_log_file表示记录慢查询sql的日志路径。即我们可以通过打开记录慢查询的开关&#xff0c;设置慢查询的时间阈值&…...

【Android源码面试宝典】MMKV从使用到原理分析(一)

去年,我们写过一篇文章,对于android原生提供的key-value存储API SharePreference,进行了从使用到原理的深入分析,同时对其中存在的ANR问题、存取慢等问题,进行了深入的探索、总结。但是之前的文章,我们仅仅指出了问题,没有给大家提供解决方案,也就是说,SharePreferenc…...

你真的懂动态库吗?一文详解动态库的方方面

这里写目录标题创建动态库创建静态库动态库与静态库的区别动态链接与静态链接的区别动态库的加载过程dll的创建以及应用程序隐式链接到dll的过程dll的创建以及应用程序显示链接到dll的过程动态库的二进制兼容性创建动态库 1.【新建】-》【项目】-》【动态链接库】 新建的动态…...

I.MX6ULL内核开发12:使用设备树插件实现RGB灯驱动

目录 一、引言 二、设备树插件格式 三、实验说明 四、实验准备 4.1 通过内核工具编译设备树插件 五、实验效果 5.1 uboot加载 5.2 加载RGB驱动 一、引言 Linux4.4以后引入了动态设备树&#xff08;Dynamic DevicesTree&#xff09;&#xff0c;这里翻译位“设备树插件…...

大家一起来找茬,新手第一次layout到底能挑出多少毛病?

有一个新手工程师在论坛上发了一篇帖子&#xff0c;把自己的处女PCB布线图贴出来。 如果不看其他网友的评论&#xff0c;你能看出多少问题呢&#xff1f;可以在留言区和我们互动哦~ 帖子里他还提出了自己的小见解&#xff1a;问一下&#xff0c;我觉得自动布线挺好用的啊&#…...

Java集合概述(Collection集合)

目录集合一、集合与数组二、集合类体系结构三、泛型(约定集合存储数据类型)四、Collection集合常用API五、Collection集合的遍历方式5.1 迭代器遍历5.2 增强for循环(for each):5.3 lambda表达式六、Collection集合存储自定义类型的对象七、常见数据结构集合 一、集合与数组 数…...

运动无线蓝牙耳机哪款好、运动无线蓝牙耳机推荐

作为 运动爱好者&#xff0c;每天早晨醒来后的第一件事就去家门口的湿地公园跑上一圈。各种运动装备都齐了&#xff0c;不过在耳机选择上还真的犯难&#xff0c;打着“运动耳机”旗号的产品也是种类繁多&#xff0c;那么到底什么样的无线耳机更适合运动呢&#xff1f;于是我花时…...

解决AAC音频编码时间戳的计算问题

1.主题音频是流式数据&#xff0c;并不像视频一样有P帧和B帧的概念。就像砌墙一样&#xff0c;咔咔往上摞就行了。一般来说&#xff0c;AAC编码中生成文件这一步&#xff0c;如果使用的是OutputStream流写入文件的话&#xff0c;就完全不需要计算时间。但在音视频同步或者使用A…...

Android 9.0 添加自定义开机广播

1.概述 在9.0的系统rom定制化开发中,由于系统开机广播接收受限,普通app接收不到这个广播,如果接收这个广播很多应用 感觉要好久收到这个广播, 所以需要自定义开机广播来使用自定义广播开启某些应用,实现自己的功能,接下来就需要分析下开机广播的流程,然后增加自定义广播…...

第四阶段10-添加类别,类别列表mapper层,service层,controller层

63. 添加类别–Mapper层 插入类别数据的功能此前已经完成&#xff01; 64. 添加类别–Service层 在项目的根包下创建pojo.dto.CategoryAddNewDTO类&#xff1a; Data public class CategoryAddNewDTO implements Serializable {/*** 类别名称*/private String name;/*** 父…...

linux内核启动分析(一)

文章目录1.HEAD1.preserve_boot_args1.1 __inval_dcache_area2.el2_setup3. set_cpu_boot_mode_flag4. __create_page_tables4.1map_memory5. __cpu_setup6. __primary_switch6.1 __enable_mmu6.2 __primary_switched最近工作中经常使用飞腾E2000的开发版&#xff0c;也遇到一些…...

wireshark常见使用操作讲解以及几个故障解决案例分享

&#xff08;1&#xff09;网卡选择 对于电脑本身有多个网卡的时候&#xff0c;选择网卡就成为了一个困惑的地方&#xff0c;其实这里很简单&#xff0c;只要把鼠标放在对应的网卡上面就可以看到地址等信息&#xff0c;就容易判断出来了。 &#xff08;2&#xff09;过滤器 直…...

利用逻辑分析仪解析串口通讯数据

利用逻辑分析仪解析串口通讯数据&#x1f527;采用的是市面上最为广泛使用的USB逻辑分析仪: &#x1f4da;资料下载&#xff1a; 链接: https://pan.baidu.com/s/1c9lwWDbtJxaJED-kzSbiJg 提取码: 5vnr&#x1f528;测试工具为&#xff1a;Logic 2.4.6&#xff0c;也可以使用Pu…...

新整理的前端面试题

pinia和vuex的区别&#xff08;1&#xff09;pinia它没有mutation,他只有state&#xff0c;getters&#xff0c;action【同步、异步】使用他来修改state数据&#xff08;2&#xff09;pinia他默认也是存入内存中&#xff0c;如果需要使用本地存储&#xff0c;在配置上比vuex麻烦…...

数据仓库-数仓分层

层级 全拼 职责划分 ODS(源数据层) Operational DataStore ODS层存储最原始的数据&#xff0c; 对数据不做任何加工处理&#xff1b; 源数据主要来自业务数据库和日志&#xff0c;这些数据是用户操作业务系统产生&#xff0c;所以叫操作型数据(Operational Data) 。 DWD(…...

好的h5网站模板/怎么弄属于自己的网站

创建一个库&#xff1a;_shop 创建三个表&#xff08;对应的图有对应字段名&#xff09;&#xff1a; 菜单&#xff1a;menu 菜单分类&#xff1a;menu_type订单:order建表语句&#xff1a;create table menu(menu_id int unsigned auto_increment,menu_name varchar(100) not…...

wordpress 套餐/安卓aso优化

为什么80%的码农都做不了架构师&#xff1f;>>> 初始化内表的作用是清空内表所有的数据行&#xff0c;将内表恢复到填充或赋值之前的状态。初始化内表过程中需要注意之处仍然是初始化无 表头行内表和有表头行内表的区别&#xff0c;以及初始化内表和表头行的区别。…...

南京公司网站建设/全网推广外包公司

此文转载自&#xff1a;https://blog.csdn.net/weixin_50998641/article/details/110247848#commentBox第一题view_source鼠标无法查看网页源代码&#xff0c;可以利用F12来查看&#xff0c;flag就在网页源码中。第二题robots根据题目提示robots&#xff0c;此题考查robots协议…...

皖icp合肥网站建设/爱站网挖掘关键词

1. 首先安装STM32 ST-Link Utility V3.7&#xff0c;电脑接板子的CN1&#xff0c;然后在STM32 ST-Link Utility V3.7点击连接目标板子(目标-连接)&#xff0c;点击External Loader&#xff0c;选择N25Q128A_STM32469I-DISCO 2. 然后选择文件&#xff0c;打开选择STM32469I-Disc…...

公司画册设计网站/杭州百度快照优化公司

https://blog.csdn.net/electech6/article/details/53618965...

农业网站建设模板下载/个人如何优化网站有哪些方法

《Oracle10g DBA》pdf下载地址&#xff1a; 网盘下载 转载于:https://www.cnblogs.com/long12365/p/9730993.html...