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: