Python168的学习笔记1
在对list的条件选择有两种常用方法,直接使用filter函数,就是filter(func,sequence);另外一种就是迭代操作,类似 x for x in sequence func。这两种方法,迭代操作比filter函数快一倍左右。
xrange与range的区别,xrange是类,生成器;然后range是直接返回list,所以多用xrange好。
timeit 后面接上操作语句,可以得到操作语句的用时。
对字典dict的筛选操作也类似,同样运用迭代的方法{k:v for k,v in dict.iteritems() func}
对set的操作也类似,同样的{x for x in set func}
关于为元组的元素命名,增加程序可读性。
eg:user=('john',16,'male')
1,是通过关键字=常量,如:name=0,然后user[name]就可以访问john了
2,通过collection.namedtuple,在创建tuple的时候就定义每个元素的名字,如:user = namedtuple('user',['name','age','sex'])
namedtuple就是tuple的一个子类,其实也就是用一个类的生成器来生成tuple,访问时可以直接用类对象user.name就得到john了。
生成随机list的时候,注意语法 data = [randint(0,10) for _ in xrange(8)]这个 _ 用得好。
用预设值生成dict的时候,可以用dict.fromkeys(seq[,values])来生成,就是用预设的键,如
利用collections库可以更高效地统计,首先利用Counter,就可以生成列表中,每个元素对应出现次数的dict。
然后用Counter.most_common(n),就可以得到出现频度最高的n个元素。
在对英语文本进行操作时,需要用到正则表达式。
import re,然后利用re.split('\W+',object),就可以在非字母处都进行分割。
排序用内置函数sorted。但如果直接用sorted对dict操作,操作的对象是key,无法直接得到我们想要的效果。
1,用zip函数构造我们想要的元组来比较,zip(dict.values(),dict.keys())可以得到value和key组成的元组。
而针对内存的使用,用迭代的方法更加节省内存,所以用zip(dict.itervalues(),dict.iterkeys())会更好。
ps:对元组元素进行排序时,先进行元组的第一个元素比较,然后再进行第二个,如此类推。
2,为sorted函数输入关键字比较,sorted(dict.items(),key=lambda x : x[1])
dict.items()返回的是(key,value),而后面关键字key等于x元组的第二个元素,也就是value,所以这样就直接对value就行比较了。
random.sample随机取样。sample(seq,n)在seq中随机取n个值。
找到多个字典的公共键,首先用dict.viewkeys()获取当前dict的key,这个函数是返回一个set。然后用&(与操作),就可以得到多个dict的公共键了。
语法为 reduce(lambda a,b : a&b,map(dict.viewkeys,[dict1,dict2,dict3...]))
当对dict有顺序要求时,可以利用collections的OrderedDict,OrderedDict是按进入字典的顺序来进行排序的。
双端循环队列可以采用collections中的deque.
存储文件,可以用序列化工具pickle库中的dump,dump(object,file),将目标序列化到文件。反序列化操作就是pickle.load(file)。注意在反序列化时,要提供相应类的定义。
Python168的学习笔记1的更多相关文章
- Python168的学习笔记8
#coding:utf8 #斐波那契数列,第三项起,每一项都等于前两项之和 def memo(func): cache = {}#闭包 def wrap(*args): if args not in ...
- Python168的学习笔记7
关于多线程操作. 对于IO操作,如访问网站,写入磁盘这种需要时间等待响应的操作,多个cpu也几乎不能提高效率. 对于CPU密集型操作,如这个格式转换,可以通过多个cpu同时去进行. 但是对于pytho ...
- Python168的学习笔记6
如何派生内置不可变类型并修改实例化行为. 个人理解,如何派生出自己想要的类. class IntTuple(tuple): def __new__(cls,iterable): g = (x for ...
- Python168的学习笔记5
关于对csv文件的操作. python标准库中有csv的库,使用非常方便. import csv with open('pingan.csv','rb') as rf: reader = csv.re ...
- Python168的学习笔记4
关于普通文本文件的读写 python2.7中,未注明的字符都是以acsii来编码的,而要让字符能够通用,必须声明为unicode. s=u'你好',s.encode('utf8')就是指用utf8来进 ...
- Python168的学习笔记3
list.extend(),可以拓展list,a=(0,1),b=(2,3) a.extend(b),a就变成(0,1,2,3) 分割字符串(除去字符串中的,\/;之类的),如果用str.split( ...
- Python168的学习笔记2
关于for循环,其实质是利用被循环对象的__iter__,或者__getitem__属性接口,由可迭代对象得到迭代器.for循环就是不断调用.next(),直到最终捕获到stop. import re ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
随机推荐
- java7与java8中计算两个日期间隔多少年多少月多少天的实现方式
最近工作中碰到个新需求,计算每个员工入职公司的时长,要求形式为多少年多少月多少天形式,某个值为0就跳过不显示,因为前段时间学习过java8新特性,对于这个需求,java8的新时间日期API可以直接解决 ...
- Sort Colors I & II
Given an array with n objects colored red, white or blue, sort them so that objects of the same colo ...
- [MySQL FAQ]系列 — EXPLAIN结果中哪些信息要引起关注
我们使用EXPLAIN解析SQL执行计划时,如果有下面几种情况,就需要特别关注下了: 首先看下 type 这列的结果,如果有类型是 ALL 时,表示预计会进行全表扫描(full table scan) ...
- sqlite3 的insert记录项思路
sqlite3 的insert记录项思路 1.组合一个insert的sql语句 2.判断是否需要立即执行,若不是立刻执行的语句,则插入到待处理的链表中,供后续事务处理时提交.必须有一个专门线程来对事务 ...
- linux shell语言编程规范安全篇之通用原则【转】
shell语言编程规范安全篇是针对bash语言编程中的数据校验.加密与解密.脚本执行.目录&文件操作等方面,描述可能导致安全漏洞或风险的常见编码错误.该规范基于业界最佳实践,并总结了公司内部的 ...
- 11 The Go Memory Model go语言内置模型
The Go Memory Model go语言内置模型 Version of May 31, 2014 Introduction 介绍 Advice 建议 Happens Before 在发生之前 ...
- Owin WebApi版本控制
public class WebApiControllerSelector : IHttpControllerSelector { private const string NamespaceKey ...
- 洛谷P3088 挤奶牛
传送门啦 这个题也是一个单调队列来优化的 $ dp $ ,我们考虑这个题,这个题让我们求出有多少奶牛会觉得拥挤,如果我们还像琪露诺那个题那样单纯用一次单调队列肯定是不行的,因为牛觉不觉得拥挤是受左右的 ...
- JS调用百度地图API标记地点
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- CF401D 【Roman and Numbers】
题意将n(n<=10^18)的各位数字重新排列(不允许有前导零) 求 可以构造几个mod m等于0的数字解法状压f[S][k] 表示选用的位数集合为S,mod m 为k的方案数注意不能有前导 ...