collections --import collections
计数器
Counter --对字典的扩展用于追踪某值的出现次数
如:import collections
str1= ‘akdjfdlkjfewioewlkwmee‘
c = collections.Counter(str1)
print c
Counter({‘e‘: 4, ‘k‘: 3, ‘w‘: 3, ‘d‘: 2, ‘f‘: 2, ‘j‘: 2, ‘l‘: 2, ‘a‘: 1, ‘i‘: 1,‘m‘: 1, ‘o‘: 1})
也可以对列表,元组进行操作 --上期的购物车作业,可以用Counter()来计算某个货物的数量
有序字典 OrderedDict --记住了字典元素添加的顺序
默认字典 defaultdict --默认给字典的值定义了一个类型
普通定义字典的方法 dict1 = dict{}
这个方法 dict1 = defaultdict(list),这样定义出来的字典,每一项的value都是一个列表 defaultdict(tuple)每一项都是一个元组
对于一般方法
>>> dict1 = {}
>>> dict1[‘k1‘]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: ‘k1‘
对于默认字典方法
>>> dict1 = collections.defaultdict(list)
>>> dict1[‘k1‘]
[]
>>> type(dict1[‘k1‘])
<type ‘list‘>
>>> dict1 = collections.defaultdict(dict)
>>> dict1[‘k1‘]
{}
>>> type(dict1[‘k1‘])
<type ‘dict‘>
可命名元组 namedtuple ---对元组的扩充,主要用于地理信息等
import collections
mytuple = collections.namedtuple(‘mytuple’,’[‘x’,’y’,’z’])
new = mytuple(1,2,3)
--new.x = 1 new.y=3 new.z=3
双向队列 deque --线程安全 与列表比较
单向队列 Queue.Queue --以后学习
迭代器和生成器
迭代器 range 内置方法_iter_ nex()
生成器 xrange 先定义,当使用时才在内存中创建,避免内存浪费
函数
内置函数
dir() dir() help() type() id() is
abs() divmod() bool() max() min() sum()
len()
all() --接收一个序列,判断,如果所有值都是真,返回真,否则假
any() --接收一个序列,判断,只要有一个值是真,返回真,否则假
--注意,0 也为假
chr() ord() hex() --十六进制 oct()--八进制 bin()-二进制
range() xrange() enumerate() –-枚举(可用于列表,是否可用于字典?)
vars() 当前模块的所有变量 --var() 是字典类型,vars().keys()就是所有变量名称
__file__ __doc__
__name__ -放在文件最后,以标明这是入口文件
理解__name__ == ‘__main__’的使用
自定义函数
def xxx
参数
--普通参数 形参 实参
--默认参数 必须放在最后
--动态参数
*args def fucn(*args) 可接收多个参数(列表,元组),自动构造成元组,如果传入参数时也加入*号,那么就不会生成元组,原先是什么,传进来就是什么(对于序列);但如果是字符串,那么会拆分字符串成字符的元组
func(11,22,33,44,55) 或func(*list)
**kwargs def func(**kwargs) 可接收多个参数(字典)
func(k1=123,k2=234,…) 或 func(**dict)
共用 *arges **args def func(*args,**args)
func(11,22,33,k1=123,k2=234,..)
文件操作
打开文件
file_obj = file (‘文件路径’,’模式’)
或file_obj = open(‘文件路径’,’模式’ ) 推荐使用open
文件打开模式有 r w a r+
U 表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)rU r+U
b 表示处理二进制文件 rb wb ab
文件方法
file_obj.close()
file_obj.next() file_obj.read([size]) 读取指定字节数据 返回一个字符串
file_obj.readline() 读取一行 file_obj.readlines() 全部读取并返回一个列表,每行为一个元素
file_obj.seek(offset[,whence]) 指定指针的位置 whence默认为0 (并不是所有的文件都可以使用)
file_obj.tell() 获取当前指针位置
file_obj.truncate() 截断数据,只保留指针之前的数据
file_obj.write(str) 写一个字符串到文件 file_obj.writelines() 写一个字符串列表到文件 ――writelines也可以写字符串,但是write只能写字符串,不能写列表
writelines还可以写字典,但只会写字典的key
writelines(sequence_of_strings) -> None. Write the strings to the file.Note that newlines are not added. The sequence can be any iterable object(任何可以迭代的对象) producing strings. This is equivalent to calling write() for each string.
WITH ---可以自动关闭文件
with open(‘’,’’) as f:
…
with open(‘a’,’r’) as f1,open(‘b’,’r’) as f2: