• python标准库


    python的标准库

    使用setdefault()和defaultdict()处理缺失的健

    读取字典中不存在的健的值就会发生异常,使用字典函数get()返回一个默认值会避免异常发生,函数setdefault()类似get(),但当健不存在的时候它会在字典中添加一项

    >>> periodic_table={'Hydrogen':1,'Helium':2}
    >>> print periodic_table
    {'Helium': 2, 'Hydrogen': 1}
    如果键不在字典中,新的默认值会被添加进去
    
    >>> catrbon=periodic_table.setdefault('Carbon',12)
    >>> periodic_table
    {'Helium': 2, 'Hydrogen': 1, 'Carbon': 12}
    

    如果试图把一个不同的默认值赋值给已经存在的健,不会改变原来的值,仍会返回初始值;

    使用Counter()计数

    >>> from collections import Counter
    >>> breakfast=['spam','spam','eggs','spam']
    >>> breakfast_counter=Counter(breakfast)
    >>> breakfast_counter
    Counter({'spam': 3, 'eggs': 1})
    
    

    函数most_common()以降序返回所有的元素,或者给定一个数字,会返回该数字前
    的元素

    >>> breakfast_counter.most_common()
    [('spam', 3), ('eggs', 1)]
    >>> breakfast_counter.most_common(1)
    [('spam', 3)]
    

    新建一个列表lunch和一个计数器lunch_counter

    >>> lunch=['eggs','eggs','bacon']
    >>> lunch_counter=Counter(lunch)
    >>> lunch_counter
    Counter({'eggs': 2, 'bacon': 1})
    

    第一种组合计数器的方式是是使用+

    >>> breakfast_counter+lunch_counter
    Counter({'eggs': 3, 'spam': 3, 'bacon': 1})
    从一个计数器中去掉另一个使用-
    >>> breakfast_counter-lunch_counter
    Counter({'spam': 3})
    可以使用交集运算符&得到两个共有的项
    >>> breakfast_counter&lunch_counter
    Counter({'eggs': 1})
    最后使用|得到所有的元素
    >>> breakfast_counter|lunch_counter
    Counter({'spam': 3, 'eggs': 2, 'bacon': 1})
    

    ‘eggs’’是两者共有的项,不同于和并,并集并没有把计数加起来,而是取其中较大的值,

    使用有序字典orderedDict()按健排序

    一个字典中的顺序是不可预知的,你可以按照添加顺序添加键abc,但函数keys()可能会返回c,a,b

    >>> quotes={'Moe':'A wise guy,huh?','Larry':'Ow!','Curly':'Nyuk nyuk!'}
    >>> for stooge in quotes:
    ...     print stooge
    ... 
    Larry
    Curly
    Moe
    

    有序字典orderedDict()记忆字典添加顺序,然后从一个迭代器按照顺序返回。

    >>> quotes=OrderedDict([('Moe','A wise guy ,huh?'),('Larry','Ow!'),('Curly','Nyuk,nyuk!')])
    >>> for stooge in quotes:
    ...     print stooge
    ... 
    Moe
    Larry
    Curly
    

    双端队列:栈+队列

    Deque是一种双端队列,同时具有栈和队列的特征,它可以从序列的任何一端添加或删除。函数popleft()去掉最左边的项并返回该项,pop()去掉最右边的项并返回该项。
    现在从一个词的两端开始扫向中间,判断是否回文

    >>> def palindrome(word):
    ...     from collections import deque
    ...     dq=deque(word)
    ...     while len(dq)>1:
    ...             if dq.popleft() != dq.pop():
    ...                     return False
    ...     return True
    ... 
    >>> palindrome('radar')
    True
    >>> palindrome('halibt')
    False
    

    如果你想写一个快速判断是否回文的程序,只需要把字符串反转和原字符串向比较就可以了

    >>> def another_palindrome(word):
    ...     return word==word[::-1]
    ... 
    >>> another_palindrome('radar')
    True
    

    使用itertools迭代代码结构

    Itertools包含特殊用途的迭代器函数,在for ...in 循环中调用函数,每次会返回一项,并记住当前调用的状态;
    即是chain()的参数只是单个迭代对象,它也会使用参数进行迭代

    >>> import itertools
    >>> for item in itertools.chain([1,2],['a','b']):
    ...     print item
    ... 
    1
    2
    a
    b
    
  • 相关阅读:
    logging模块-logging.basicConfig、logger.setLevel、handler.setLevel优先级
    Python标准模块--logging(转载)
    第三节,入门知识和windows系统安装python环境
    第二节windows系统下Xshell 5软件远程访问虚拟机 Linux系统
    第一节windows系统安装虚拟机VMware 软件
    数学数列
    java String
    linux eclipse 报错过时的方法
    java.util.Random 类
    java uitl
  • 原文地址:https://www.cnblogs.com/hanfei-1005/p/5703819.html
Copyright © 2020-2023  润新知