zoukankan      html  css  js  c++  java
  • python内置函数

    1、filter()

    #filter(func,seq)
    """纯Python描述filter函数"""
    def Myfilter(bool_func,seq):
        filtered_seq = []
        for obj in seq:
            if bool_func(obj):
                filtered_seq.append(obj)
        return filtered_seq
    
    print Myfilter(lambda x:x%3==0, [1,2,3,4,5,6,7,8,9])    #[3, 6, 9]
    """Build-In function filter()"""
    print filter(lambda x:x%3==0, [1,2,3,4,5,6,7,8,9])      #[3, 6, 9]
    """非函数下的实现"""
    print [x for x in [1,2,3,4,5,6,7,8,9] if x%3==0]        #[3, 6, 9]
    #还记得上一节写的,如果能有for..in..if(或列表解析)能处理的最好用这个而放弃lambda

    试验:列表解析和lambda性能比较

    lambda:

    import time
    start = time.clock()
    filter(lambda x:x%3==0, [i for i in range(10000000)])
    end = time.clock()
    print end-start     #耗时4.9441799282

    列表解析:

    import time
    start = time.clock()
    [x for x in range(10000000) if x%3==0]
    end = time.clock()
    print end-start     #耗时2.95589058109

    从上可见,最好使用列表解析。

    2、map()

    """纯Python模拟map()"""
    def Mymap(func,seq):
        mapped_seq = []
        for obj in seq:
            mapped_seq.append(func(obj))
        return mapped_seq
    
    print Mymap(lambda x:x*10,[i for i in range(10)])   #[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
    """内建map()函数"""
    print map(lambda x:x*10,[i for i in range(10)])     #[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
    """非函数式编程"""
    print [x*10 for x in range(10)]                     #[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
    """多个序列的map()"""
    print map(lambda x,y:x+y,[1,2,3],[4,5,6])           #[5, 7, 9]
    """None与map()"""
    print map(None,[1,2,3],[4,5,6])                     #[(1, 4), (2, 5), (3, 6)]
    """None在map()中使用效果同zip(),将不相干的序列归并在一起"""
    print zip([1,2,3],[4,5,6])                          #[(1, 4), (2, 5), (3, 6)]

    3、reduce()

    """纯Python模拟reduce()"""
    def Myreduce(bin_func,seq,init=None):
        Iseq = list(seq)
        if init is None:
            res = Iseq.pop()
        else:
            res = init
        for obj in Iseq:
            res = bin_func(res,obj)
        return res
    
    print Myreduce(lambda x,y:x+y, [i for i in range(10)])      #45
    print Myreduce(lambda x,y:x+y, [i for i in range(10)],100)  #145
    """reduce()"""
    print reduce(lambda x,y:x+y,[i for i in range(10)])         #45
    print reduce(lambda x,y:x+y,[i for i in range(10)],100)     #145

    Python内置(built-in)函数随着python解释器的运行而创建。在Python的程序中,你可以随时调用这些函数,不需要定义。最常见的内置函数是:

    print("Hello world!")

    数学运算

    abs(-5)                          # 取绝对值,也就是5

    round(2.6)                       # 四舍五入取整,也就是3.0

    pow(2, 3)                        # 相当于2**3,如果是pow(2, 3, 5),相当于2**3 % 5

    cmp(2.3, 3.2)                    # 比较两个数的大小

    divmod(9,2)                      # 返回除法结果和余数

    max([1,5,2,9])                   # 求最大值

    min([9,2,-4,2])                  # 求最小值

    sum([2,-1,9,12])                 # 求和

    类型转换

    int("5")                         # 转换为整数 integer

    float(2)                         # 转换为浮点数 float

    long("23")                       # 转换为长整数 long integer

    str(2.3)                         # 转换为字符串 string

    complex(3, 9)                    # 返回复数 3 + 9i

    ord("A")                         # "A"字符对应的数值

    chr(65)                          # 数值65对应的字符

    unichr(65)                       # 数值65对应的unicode字符

    bool(0)                          # 转换为相应的真假值,在Python中,0相当于False

    在Python中,下列对象都相当于False: [], (), {}, 0, None, 0.0, ''

    bin(56)                          # 返回一个字符串,表示56的二进制数

    hex(56)                          # 返回一个字符串,表示56的十六进制数

    oct(56)                          # 返回一个字符串,表示56的八进制数

    list((1,2,3))                    # 转换为表 list

    tuple([2,3,4])                   # 转换为定值表 tuple

    slice(5,2,-1)                    # 构建下标对象 slice

    dict(a=1,b="hello",c=[1,2,3])    # 构建词典 dictionary

    序列操作

    all([True, 1, "hello!"])         # 是否所有的元素都相当于True值

    any(["", 0, False, [], None])    # 是否有任意一个元素相当于True值

    sorted([1,5,3])                  # 返回正序的序列,也就是[1,3,5]

    reversed([1,5,3])                # 返回反序的序列,也就是[3,5,1]

    类,对象,属性

    # define class
    class Me(object): def test(self): print "Hello!"
    def new_test():
        print "New Hello!"
    me = Me()

    hasattr(me, "test")               # 检查me对象是否有test属性

    getattr(me, "test")               # 返回test属性

    setattr(me, "test", new_test)     # 将test属性设置为new_test

    delattr(me, "test")               # 删除test属性

    isinstance(me, Me)                # me对象是否为Me类生成的对象 (一个instance)

    issubclass(Me, object)            # Me类是否为object类的子类

    编译,执行

    repr(me)                          # 返回对象的字符串表达

    compile("print('Hello')",'test.py','exec')       # 编译字符串成为code对象

    eval("1 + 1")                     # 解释字符串表达式。参数也可以是compile()返回的code对象

    exec("print('Hello')")            # 解释并执行字符串,print('Hello')。参数也可以是compile()返回的code对象

    其他

    input("Please input:")            # 等待输入

    globals()                         # 返回全局命名空间,比如全局变量名,全局函数名

    locals()                          # 返回局部命名空间

  • 相关阅读:
    Quartz使用总结
    quartz基本介绍和使用
    Spring的StringUtils工具类
    JreBel热部署不生效,2019最新解决方法
    解决IDEA下SpringBoot启动没有Run Dashboard并找回
    IDEA十大经典常用插件
    Java8 Comparator 排序方法
    JRebel 激活码 2020
    比较两个java.util.Date 的日期(年月日)是否相同(忽略时、分、秒)的多种方法
    kafka的Lag 计算误区及正确方式
  • 原文地址:https://www.cnblogs.com/muzinan110/p/4919661.html
Copyright © 2011-2022 走看看