cookbook(小结1)

本文介绍了Python编程中关于数据结构、算法、字符串处理、数字和时间操作、迭代器和生成器、文件I/O以及数据编码等多个方面的实用技巧,包括序列分解、数据排序、集合操作、字符串匹配、Unicode表示、文本格式化、日期时间处理、随机数生成、文件读写、CSV和JSON操作、XML解析、数据库交互等,旨在提升Python编程效率和代码质量。
摘要由CSDN通过智能技术生成

数据结构和算法

序列分解为单独的变量

任何序列(或可迭代对象)都可以通过一个简单的赋值操作来分解为单独的变量,唯一的要求是变量的总数和结构要与序列相吻合。

不仅仅只是元组或列表,只要对象恰好是可迭代的,那么就可以执行分解操作,这包括字符串、文件、迭代器以及生成器。

通常用一个用不到的变量名(_)来作为要丢弃的值的名称。

从任意长度的可迭代对象中分解元素

‘*表达式’,‘*_’丢弃多个值。

保存最后N个元素

collections.deque(max=N)创建一个固定长度的队列,当有新纪录加入而队列已满时会自动移除最老的那条纪录。

找出最大或最小的N个元素

heapq.nlargest(n, list),heapq.nsmallest(n, list)

在字典中将键映射到多个值上

用collections.defaultdict。

让字典保持有序

使用collections模块中的OrderedDict()类。当对字典做迭代时,它会严格按照元素初始添加的顺序进行。

与字典有关的计算

通常利用zip()将字典的键和值反转过来。

在两个字典中寻找相同点

通过key()或者items()方法执行常见的集合操作。

从序列中移除重复项且保持元素间顺序不变

如果序列中的值时可哈希的,可以通过集合和生成器解决,否则使用key来排除。

对切片命名

内置的slice()函数会创建一个切片对象,可以用在任何允许进行切片操作的地方,还可以用过slice().star,slice().stop,slice().step属性来得到该对象的信息。

找出序列中出现次数最多的元素

可以使用collections模块中的Counter()类,Counter对象可以同各种数学运算操作结合起来使用。

通过公共键对字典列表排序

利用operator模块中的itemgetter函数对这类结构进行排序。

var = sorted(row, key=itemgetter(key,key,…))

根据字段将记录分组

使用itertools.groupby()函数对数据进行分组,groupby()通过扫描序列找出拥有相同值(或由参数key指定的函数返回的值)的序列项,并将它们分组,groupby()创建了一个迭代器,而在每次迭代时都会返回一个值(value)和一个子迭代器(sub_iterator),这个子迭代器可以产生所有在该分组内具有该值的项。

筛选序列中的元素

可以使用生成器表达式通过迭代的方式产生筛选的结果,itertools.compress()可以接受一个可迭代对象以及一个布尔选择器序列作为输入,输出时,它会给出所有在相应的布尔选择器中为True的可迭代对象元素。

将名称映射到序列的元素中

使用collections.namedtuple(),如果要修改任何属性,可以通过namedtuple实例的_replace()方法来实现。

将多个映射合并为单个映射

利用collections模块中的ChainMap类来解决,如果具有重复的键,会采用第一个映射中所对应的值。

 

字符串和文本

针对任意多的分隔符拆分字符串

使用re.split()

在字符串的开头或结尾处做文本匹配

如果需要同时针对多个选项做检查,只需给startswith()和endswith()提供包含可能选项的元组即可。

利用Shell通配符做字符串匹配

使用fnmatch.fnmatch(name, 匹配格式)和fnmatchcase(name, 格式)。

文本模式的匹配和查找

   使用str.find()、str.endswith()、str.startswith()和re.find()等函数。

查找和替换文本

   使用str.replace(),re.sub(模式,替换的模式)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值