Python Cookbook学习总结

第一章:数据结构和算法

  1. 任何序列(可迭代的对象)都可以通过一个简单的赋值操作来分解为单独的变量,唯一的要求是变量的总数和结构要与序列相吻合。(比如对于存储二维坐标等的二维数组,可以通过for x,y in range()操作分别取其x,y坐标)

例:data=[‘ACM’,50,50.11,(2012,12,12)]

name,shares,price,date=data

print (name)

  1. 当可迭代的对象长度较长,而我们只需要取其中的N个元素时,可以使用“*表达式”解决此问题,如:

def drop_first_last(grades):

first,*middle,last=grades

return avg(middle)

其中以*开头的参数表示可以接收任意数量的位置参数的函数(元组形式),以**开头的参数表示可以 接收任意数量的关键字参数的函数(字典形式)。

  1. collections.deque的使用:指定maxlen时即为创建了一个固定长度的队列,不指定maxlen得到的为一个无界限的队列。

  1. lambda函数是一种可以在代码中内联定义的小型匿名函数,通常用于定义一个短小精悍的函数来实现某一特定的任务。语法形式如下:

lambda 参数列表: 表达式key=lambda s:s[‘price’]

  1. 优先级队列的实现:

使用到了堆(字典操作:item,key,value)

heapq.heappush(heap,item)

表示将item加入列表heap中,其中item一般为一个元组,根据元组中的第一个元素进行排序(从小到大的排序,即先输出小的值)。元组中可为(prioroty,index,item)形式,此时当prioroty值相等时,会比较索引值,即index。

(leetcode347.前k个高频元素)

  1. collections模块中的defaultdict类可以实现一个键映射到多个值上,OrderedDict类可以实现字典做迭代时,按照初始化添加的顺序进行(内部维护了一个双向链表)

  1. 反转字典的键值zip(prices.values(),prices.keys())

因为字典上执行数据操作只能处理键,而不是值,所以进行键值的反转可以简化很多问题。

  1. 字典中的键也支持常见的集合操作,如求并集、交集和差集等。

例:c={key:a[key] for key in a.keys()-{‘z’,’w’}}

  1. 可哈希的定义:不可变数据类型都是可哈希的,包括整数、浮点数、布尔值、字符串、元组等。可变数据类型都是不可哈希的,因为它们的值在创建后可以修改,这样会导致它们的哈希值变化。

  1. 对切片命名:slice函数,a=slice(2,4)

  1. 查找序列中元素出现的次数,collections中的Counter类,同时Counter可以执行数学运算操作

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值