星号的作用
python利用*号对可迭代的对象进行解压,并赋值给多个对象。
示例代码如下:
1 | record = ['lakers','76ers','warriors'] |
星号表达式也可以应用于列表的开始部分以及字符串的分割,若想解压一些元素而不使用,则使用一个普通的’_’或’ign’即可。在迭代元素为可变长元组的序列时很有用。
示例代码如下:
1 | records = [ |
其中records为一个带有标签的元组序列
如何保留最后N个元素
示例代码如下:
1 | from collections import deque |
在多行上做简单的文本匹配,并返回匹配所在行的最后N行。使用deque(maxlen=N)构造函数会新建一个固定大小的队列。当新的元素加入并且这个队列已满,最老的元素会自动被移除掉。
dict创建字典
dict.fromkeys(“[…],[…]”) 第一个参数指定keys,第二个参数指定value
实现一个简单的优先级队列
示例代码如下:
Item类
1 | class Item(): |
1 | import heapq |
字典中的键映射多个值
d=defaultdict(list)
d=setdefault('a',[]).append(1)
去重
(return和yield的区别)
示例代码如下:
1 | def deque(items): |
若是不用return,用yield编写生成器。
示例代码如下:
1 | def dedupe(items,key=None): |
关于命名切片
- 内置的slice()函数创建了一个切片对象,可以用在任何切片允许使用的地方。
- indices(sizde)返回一个三元组(start,stop,step),所有值都会被合适的缩小以满足边界限制,避免出现indexError异常。
for i in range(*a.indices(len(list)))
关键字排序
使用itertools.groupby函数,扫描整个序列,并且查找连续相同值的元素序列。在此之前,是要会根据分组的字段进行预先排序。
示例代码如下:rows.sort(key=itemgetter('date'))
for date,item in groupby(rows,key=itemgetter('date')):
字典表达式
示例代码如下:p={key:value for key,value in dict1.items() if key in list1}
p=dict((key,value) for key,value in dict1.items() if value>80)
命名元组
示例代码如下:
1 | from collections import namedtuple |
好处是避免使用下标操作让代码表意不清,且非常依赖代码的结构。
如果需要改变属性的值,使用命名元组实例的_replace()方法,它会创建一个全新的命名元组并将对应的字段用新的值来代替。
当命名元组拥有可选或缺失字段的情况下,可以利用命名元组来填充数据,先创建一个包含缺省值的原型元组,使用_replace()方法创建新的值。