zoukankan      html  css  js  c++  java
  • python常用函数库及模块巧妙用法汇总

    在用python编写脚本或写程序过程中总要遇到一些对大文件或数据进行排序,计算,循环跌代等.我想下面这些函数库一定能用得到,总结如下:便于以后备查

    列表去重(传说是列表去重最高效的方法):

    al = ['/data/consul/script/check_port.py', '/data/consul/script/check_port.py', '/data/consul/script/check_port.py']

    {}.fromkeys(al).keys()

    ['/data/consul/script/check_port.py']

    字典排序

    a = {1:'v1', 4:'k4', 3:'s3', 2:'b2'}
    print sorted(a.items(),key=lambda a:a[0])

    range 和xrange用法

    range 和 xrange 使用区别
    
    range
    函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列。
    range示例: 
    >>> range(5) 
    [0, 1, 2, 3, 4] 
    >>> range(1,5) 
    [1, 2, 3, 4] 
    >>> range(0,6,2)
    [0, 2, 4]
    
    xrange
    函数说明:用法与range完全相同,所不同的是生成的不是一个数组,而是一个生成器。
    xrange示例: 
    >>> xrange(5)
    xrange(5)
    >>> list(xrange(5))
    [0, 1, 2, 3, 4]
    >>> xrange(1,5)
    xrange(1, 5)
    >>> list(xrange(1,5))
    [1, 2, 3, 4]
    >>> xrange(0,6,2)
    xrange(0, 6, 2)
    >>> list(xrange(0,6,2))
    [0, 2, 4]h4
    由上面的示例可以知道:要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间,这两个基本上都是在循环的时候用:
    for i in range(0, 100): 
    print i 
    for i in xrange(0, 100): 
    print i 
    
    这两个输出的结果都是一样的,实际上有很多不同,range会直接生成一个list对象:
    a = range(0,100) 
    print type(a) 
    print a 
    print a[0], a[1] 
    
    输出结果:
    
    <type 'list'>
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
    0 1
    
    而xrange则不会直接生成一个list,而是每次调用返回其中的一个值:
    a = xrange(0,100) 
    print type(a) 
    print a 
    print a[0], a[1] 
    
    输出结果:
    <type 'xrange'>
    xrange(100)
    0 1
    
    所以xrange做循环的性能比range好,尤其是返回很大的时候,尽量用xrange吧,除非你是要返回一个列表。
    

    filter用法

    #对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple(取决于sequence类型)返回,示例如下
    def numv(x):
        return x % 2 !=0 and x % 3 != 0
    
    def strv(x):
        return x != 'a'
    
    print filter(numv,range(1,101))
    print filter(strv,"abcdefghi")
    

    map用法

    #map usage: map(function, sequence):
    #des: 对sequence中的item依次执行function(item),将执行结果组成一个List返回另外map也支持多个sequence,当然这也要求function支持相应数量的参数输入,示例如下:
    def cube(x):
        return x*x*x
    
    
    def add(x,y):
        return x + y
    
    print 'cube chengfa info:'
    print map(cube,range(1,11))
    
    print "add jiafa info:"
    print map(add,range(8),range(8))
    

    enumerate用法

    #对一个列表或数组既要遍历索引又要遍历元素时
    
    tlist = ['changchun','wangqk','xurna','kangbokun','huaran','lifei']
    print "for xunhuan info:",'
    '
    for i in range(0,len(tlist)):
        print i,tlist[i]
    
    #enumerate会将数组或列表组成一个索引序列。使我们再获取索引和索引内容的时候更加方便如下:
    print "enumerate usage info:",'
    '
    for index,text in enumerate(tlist):
        print index,text,
    
    
    如果你要计算文件的行数,可以这样写:
    
    count = len(open(thefilepath,‘rU’).readlines())
    
    前面这种方法简单,但是可能比较慢,当文件比较大时甚至不能工作,下面这种循环读取的方法更合适些。
    Count = -1 
    For count,line in enumerate(open(thefilepath,‘rU’)): 
    Pass
    Count += 1  
    

    解析字典值放在元组里

    >>> dict = {"aa":4,"bb":6}
    >>> globals().update(dict)
    >>> aa
    4
    >>> bb
    6
    >>> aa,bb
    (4, 6)
    >>> 
    
    >>> globals()["aa"] = "bb"
    >>> aa
    'bb'
    

    字符串格式化

    >>> "{key}={value}".format(key="a",value=10)
    'a=10'
    >>> "[{0:<10}],[{0:^10}],[{0:*>10}]".format("aa")
    '[aa        ],[    aa    ],[********aa]'
    

    列表去重

    >>> l = [1,2,3,4,3,2,1,3]
    >>> list(set(l))
    [1, 2, 3, 4]
    >>> {}.fromkeys(l).keys()
    [1, 2, 3, 4]
    >>>
    <h4></h4>
  • 相关阅读:
    Oracle 11g SQL Fundamentals Training Introduction02
    Chapter 05Reporting Aggregated data Using the Group Functions 01
    Chapter 01Restriicting Data Using The SQL SELECT Statemnt01
    Oracle 11g SQL Fundamentals Training Introduction01
    Chapter 04Using Conversion Functions and Conditional ExpressionsConditional Expressions
    Unix时代的开创者Ken Thompson (zz.is2120.bg57iv3)
    我心目中计算机软件科学最小必读书目 (zz.is2120)
    北京将评估分时分区单双号限行 推进错时上下班 (zz)
    佳能G系列领军相机G1X
    选购单反相机的新建议——心民谈宾得K5(转)
  • 原文地址:https://www.cnblogs.com/shantu/p/4598929.html
Copyright © 2011-2022 走看看