python高级编程知识点_(转)python 高级编程技巧学习笔记

本文介绍了多种数据处理技巧,包括数据筛选、统计频度、字典排序等,并提供了使用Python标准库如collections、itertools的示例。

转自https://www.jianshu.com/p/104cec085611,部分图出不来,mark一下,关键时候供查看。

第二章 数据结构相关话题

2.1、筛选数据

两种方式

filter函数:filter(lambda x: x>0, data)

注意:python3 需要把filter的结果转为list ,也就是list(filter(lambda x: x>0, data))

加条件的遍历: [ x for x in data if x > 0 ]

如果想转成集合,就把[]改成{}

2.2、如何为元组的每个元素命名

使用元组的好处:减少存储开销

缺点:使用索引访问元素,降低程序可读性

解决方案:

1、定义一系列数值常量

NAME, AGE, SEX, EMAIL = range(4)

2、使用标准库中的collections.namedtuple替代内置tuple

2.3、如何统计序列中出现的频度

解决方案:使用collections.Counter对象

将序列传入Counter的构造器,得到Counter对象是元素频度的字典

Counter.most_common(n)方法得到频度最高的n个元素的字典

2.4、如何根据字典中值的大小,对字典进行排序

解决方案:使用内置函数sorted

2.5、如何快速找到多个字典的公共键

案例:统计每轮比赛都有进球的球员

解决方案:利用集合的交集操作

1、使用字典的viewkeys()方法,得到一个字典keys的集合

2、使用map函数,得到所有字典的keys的集合

3、使用reduce函数,取所有字典的keys的集合的交集

2.6、如何让字典保持有序,也就是遍历的时候按插入顺序打印

解决方案:使用collections.OrderedDict

以OrderedDict代替内置字典dict,依次将数据存入OrderedDict

2.7、如何实现用户的历史记录功能(最多n条)

解决方案:使用容量为n的队列容量存储历史记录

使用标准库collections中的deque,它是一个双端循环队列

程序退出前,可以使用pickle将队列存入文件,再次运行时将其导入。

第三章 迭代器

3.1、如何实现可迭代对象和迭代器对象

可迭代对象需要有iter方法,这个方法返回迭代器对象。

而迭代器对象则要有next()

3.2、如何使用生成器函数实现可迭代对象

yield关键字

yield 是一个类似 return 的关键字,只是这个函数返回的是个生成器

当你调用这个函数的时候,函数内部的代码并不立马执行 ,这个函数只是返回一个生成器对象

当你使用for进行迭代的时候,函数中的代码才会执行

3.3、 如何进行反向迭代以及如何实现反向迭代

解决方案:

1、使用内置函数reversed()方法

2、实现反向迭代协议的 __reverse 方法,它返回一个反向迭代器

3.5、 如何对迭代器做切片操作

解决方案:使用标准库中的itertools.islice,它能返回一个迭代对象切片的生成器

3.6、如何在一个for语句中迭代多个可迭代对象

解决方案:

并行:使用内置函数zip,它能将多个可迭代对象合并,每次迭代返回一个元组

串行:使用标准库中的itertools.chain,它能将多个可迭代对象连接

第四章 字符串处理

4.1、如何拆分含有多种分隔符的字符串

解决方案:

1、连续使用str.split()方法,每次处理一种分隔符

2、使用正则表达式的re.split()方法,一次性拆分字符串

4.2、如何判断一个字符串是以b开头或结尾

解决方案:

使用字符串的str.startswith()和endswith()方法。注意:多个匹配时参数使用元组。

4.3、如何调整字符串中文本的格式

解决方案:

使用正则表达式re.sub()方法做字符串替换,利用正则表达式的捕获组,捕获每个部分内容,在替换字符串中调整各个捕获组的顺序

4.4、如何将多个小字符串拼接成一个大字符串

解决方案:

方法一:迭代列表,使用‘+’连接字符串

方法二:使用str.join()方法,更加快速的拼接列表的字符串

4.5、如何对字符串进行左中右对齐

解决方案:

1、使用字符串的str.ljust(), str.rjust(), str.center()进行左中右对齐

2、使用format()方法,传递类似‘<20’, '^20', '>20'参数

4.6、如何去掉字符串中不需要的字符

解决方案:

1、字符串strip(), lstrip(), rstrip()去掉字符串两端字符

2、删除单个固定位置的字符,可以使用切片 + 拼接的方式

3、字符串的replace方法或正则表达式re.sub()删除任意位置字符

4、字符串translate()方法,可以同时shanchu删除多种不同字符

第五章 文件处理

5.1、如何读写文本文件(py2和py3区别)

字符串的语义发生变化

py2 py3

str ---> bytes

unicode ----> str

解决方案:

py2 写入文件前对unicode编码,读入文件后对二进制解码

py3 open函数指定‘t’的文本模式,encoding指定编码格式

5.2、如何处理二进制文件

解决方案:

open函数以二进制模式打开文件,指定mode为‘b’

二进制文件可以用readinto,读入到提前分配好的buffer中,便于数据处理

解析二进制文件可以用标准库中的struct模块的unpack方法

5.3、如何设置文件的缓冲

解决方案:设置open函数的buffering参数

1、全缓冲,buffering设置为大于1的整数n,n为缓冲区大小

2、行缓冲,buffering设置为1,遇到换行符\n就停止缓冲

3、无缓冲,buffering设置为0

5.4、如何将文件映射到内存

解决方案:使用标准库mmap模块中的mmap()函数,它需要一个打开的文件描述符作为参数

5.5、如何访问文件的状态

解决方案:

1、系统调用,标准库中os模块下的三个系统调用stat, fstat, lstat获取文件状态

2、快捷调用,标准库中os.path下一些函数,使用起来更加简洁(没有文件 访问权限的函数)

5.6、如何使用临时文件?

解决方案:使用标准库中tempfile下的TemporaryFile, namedTemporaryFile

第六章 数据处理

6.1、如何读写CSV数据

解决方案:使用标准库中的CSV模块,可以使用其中reader和writer完成CSV读写

6.2、如何读写json数据

解决方案:使用标准库中的json模块,其中loads,dumps函数可以完成json数据的读写

6.3、如何读写Excel文件

解决方案:使用第三方库xlrd和xlwt,这两个库分别用于Excel读和写

源码直接下载地址: https://pan.quark.cn/s/95437fdf229e Intel I-219V网卡驱动是一款专门为Intel的I-219V千兆以太网控制器而研发的驱动程序,其主要作用在于保障在Ubuntu 16.04操作系统环境下的正常运作以及优化系统性能。Intel I-219V作为一款广泛应用的内置网络接口控制器(NIC),常被集成在台式机及笔记本电脑的主板上,负责提供高速的网络连接服务。Intel公司所提供的e1000e驱动是与此硬件相配套的开源驱动解决方案,其中版本3.3.5.3是专门针对该硬件设备的定制版本。此驱动包含了不可或缺的源代码部分,赋予开发者和系统管理者按照特定需求进行编译和定制的权限,从而能够适应多样化的系统配置或针对特定情形进行问题解决。源代码的可用性同样表明用户有能力依据Linux内核的更新情况来升级驱动,确保与最新技术标准的兼容性。在Ubuntu 16.04系统中成功编译的驱动意味着它已经通过了严苛的测试流程,并能够与该版本的Linux内核实现良好兼容。Ubuntu 16.04,其代号为Xenial Xerus,是一个长期支持(LTS)的版本,因此对于那些追求系统稳定性和安全保障的用户群体而言具有特殊的意义。驱动程序的兼容性保障了I-219V网卡能够在该系统平台上实现无缝运行,提供稳定可靠的网络连接,这既包括局域网(LAN)的连接,也可能涵盖通过Wi-Fi桥接实现的无线网络连接。驱动程序的核心职责涵盖了网络接口的初始化与管理、数据包的接收与发送处理,以及错误检测与纠正功能的执行。在Linux操作系统架构中,驱动通常以模块的形式加载至内核之中,这种设计允许在非必要时期进行卸载操作,以此来有效节省系统资源。e1000e驱...
内容概要:本文围绕基于共识的捆绑算法(CBBA)在多智能体系统中的多任务分配问题展开研究,重点应用于远程太空船交会与维修的相对轨道操作(RPO)规划。通过Matlab代码实现了CBBA算法,系统地解决了多个航天器在复杂空间环境下协同执行多目标任务时的任务分配、路径规划与动态协商问题。研究详细展示了算法在任务分解、竞标机制、共识达成及冲突消解等方面的核心逻辑,验证了其在分布式决策、通信受限条件下的高效性与鲁棒性,并结合航天工程实际背景突出了算法的应用价值。该资源不仅提供完整的仿真代码,还包含详细的流程解析,有助于深入理解多智能体协同机制的设计原理。; 适合人群:具备控制理论、航天器动力学、多智能体系统或分布式优化背景的研究生、科研人员及航空航天领域工程技术人员,熟练掌握Matlab编程者尤佳。; 使用场景及目标:①应用于在轨服务、空间碎片清除、多航天器编队飞行、星座维护等多智能体协同任务的任务分配与规划;②为研究人员提供CBBA算法的实现范例,支撑其开展分布式任务规划算法的改进与扩展研究;③作为教学案例用于高级课程中讲解多智能体协同决策机制。; 阅读建议:建议结合Matlab代码逐模块分析算法实现过程,重点关注任务打包、竞标更新、共识收敛等关键环节,可尝试引入通信延迟、故障容错或障碍规避机制以进一步提升算法实用性。
内容概要:本文介绍了一种基于关键场景辨别算法的两阶段鲁棒微网优化调度方法,旨在有效应对风电等可再生能源出力不确定性带来的调度挑战。通过Matlab代码实现,构建了包含预调度与实时调整的两阶段鲁棒优化模型,第一阶段制定初始调度计划以应对不确定性,第二阶段根据实际运行数据进行修正,从而提升微网运行的经济性与可靠性。该方法结合场景生成与缩减技术,识别关键不确定性场景,降低计算复杂度,同时增强了调度方案的鲁棒性。文中还探讨了该方法与智能优化算法、机器学习及电力系统仿真工具的集成应用,展现了其在复杂综合能源系统中的广阔应用前景。; 适合人群:具备一定电力系统基础知识和Matlab编程能力,从事新能源、微网优化、不确定性建模与鲁棒调度等领域研究的科研人员、工程技术人员及研究生。; 使用场景及目标:①应用于高比例可再生能源接入的微电网优化调度,提高系统对源荷不确定性的适应能力与运行稳定性;②为科研人员提供可复现的两阶段鲁棒优化建模与求解范例,支撑高水平学术论文的复现、算法改进与创新研究。; 阅读建议:建议结合提供的Matlab代码与网盘资料,动手实践关键场景生成、不确定性建模、两阶段优化建模与求解全过程,重点关注鲁棒优化框架的设计逻辑与关键场景辨别的实现机制,同时参考文中提及的多种算法与工具,拓展研究思路与应用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值