• [ Python入门教程 ] Python常用内置函数介绍


      Python提供了一个内联模块buildin。内联模块定义了一些开发中经常使用的函数,利用这些函数可以实现数据类型的转换、数据的计算、序列的处理等功能。下面将介绍内联模块中的常用函数。

      Python内置函数的基本用法可以查看Python安装目录下的doc目录下的说明文档,本文仅介绍Python典型的内置函数使用方法。

    reduce(function, iterable[, initializer]) 对序列的值进行累计计算

      reduce()可以实现对序列进行连续处理的功能。reduce()的声明如下:

     reduce(function, sequence[, initial]) -> value

     下面代码演示了reduce(连续处理的功能。

    (1)实现对指定列表数字进行累加。

    >>> reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])
    15

    (2)指定initial值,再执行列表数字累加操作

    >>> reduce(lambda x, y: x+y, [1, 2, 3, 4, 5], 15)
    30

    filter(function, iterable) 使用指定方法对序列过滤可迭代对象的元素

      filter()可以对某个序列做过滤处理,判断自定义函数的参数返回的结果是否为真来过滤,并一次性返回处理结果。filter()的声明如下:

     filter(function or None, sequence) -> list, tuple, or string

      下面这段代码演示了filter()过滤序列的功能,从给定的列表中过滤出大于0的数字。

    >>> filter(lambda x:x>0,range(-9,10))
    [1, 2, 3, 4, 5, 6, 7, 8, 9]

    map(function, iterable, ...)  使用指定方法处理传入的每个可迭代对象的元素,生成新的可迭代对象

      map()可以对多个序列的每个元素都执行相同的操作,并返回一个map对象。map()的声明如下所示:

    map(function, sequence[, sequence, ...]) -> list

      下面代码演示了map()函数处理的功能,

    (1)函数只有1个参数,传入1个序列。求指定序列每个元素的平方

    >>> map(lambda x:x*x,range(1,10))
    [1, 4, 9, 16, 25, 36, 49, 64, 81]

     说明:map()函数传入序列的个数需要与map中第1个参数的函数参数个数要一致。否则会报报错。如下

    >>> map(lambda x:x*x,range(1,10),range(1,10))
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: <lambda>() takes exactly 1 argument (2 given)

    (2)求2个序列元素的相加后的值。两个序列的元素个数一致。

    >>> map(lambda x,y:x+y,range(1,10),range(11,20))
    [12, 14, 16, 18, 20, 22, 24, 26, 28]

      上述例子中传入map()函数的2个序列元素个数一致,每个序列中的元素一一对应进行计算。如果每个序列的长度不相同,则短的序列后会补充None,再进行计算。

    enumerate(sequence, start=0) 根据可迭代对象创建枚举对象

      enumerate()通常用于将一个可遍历的数据对象(如列表、元组或字符串),以列表形式返回,列表中的元素为索引和值组成的元组。

    seasons = ['Spring', 'Summer', 'Fall', 'Winter']
    for index,value in enumerate(seasons):
        print index,value

    输出结果如下:

    0 Spring
    1 Summer
    2 Fall
    3 Winter

    isinstance(object, classinfo) 判断对象是否是类或者类型元组中任意类元素的子类 

    >>> num = 2
    >>> isinstance (num, int)
    True
    >>> isinstance (num,str)
    False
    >>> isinstance (num,(str,int,list))
    True

    raw_input([prompt])/input([prompt]) 获取控制台的输入

      raw_input([prompt])/input([prompt]) 函数都可以用于获取控制台的输入 ,二者的使用区别如下:

    (1)raw_input()将所有输入作为字符串看待,返回字符串类型。而input()在对待纯数字输入时具有自己的特性,它返回所输入的数字的类型(int, float)。

    (2)二者均能接收字符串,但raw_input()直接读取控制台的输入(任何类型的输入它都可以接收)。而对于input(),它希望能够读取一个合法的 python 表达式,即你输入字符串的时候必须使用引号将它括起来,否则它会引发一个 SyntaxError 。

    (1)同为输入数字,获取时类型不同

    >>> num = raw_input('Please input a number:')
    Please input a number:23
    >>> type(num)
    <type 'str'>
    >>> print num
    23
    >>> num = input('Please input a number:')
    Please input a number:23
    >>> type(num)
    <type 'int'>
    >>> print num
    23

    (2)输入字符串,二者输入方式不同

    >>> str = raw_input('Please input a string:')
    Please input a string:hello
    >>> print str
    hello
    >>> str = input('Please input a string:')
    Please input a string:'hello'
    >>> print str
    hello

     如果使用input()函数使用不带引号的方式输入,函数抛出NameError错误,如下

    >>> str = input('Please input a string:')
    Please input a string:hello
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<string>", line 1, in <module>
    NameError: name 'hello' is not defined

    sorted(iterable[, cmp[, key[, reverse]]]) 返回一个排序后的列表

      sorted()函数用于排序指定序列。返回结果是1个新的序列,不会在原序列上进行操作。sorted()的声明如下:

    sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list

      参数说明:

    iterable 可迭代对象。
    cmp 比较函数,cmp()有两个参数,参数的值都是从可迭代对象中取出。
    key 主要是用来进行比较的元素,只有一个参数,指定可迭代对象中的一个元素来进行排序。
    reverse 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

    (1)对指定列表进行排序

    >>> lst = [5,7,6,3,4,1,2]
    >>> lst_sorted = sorted(lst)
    >>> lst
    [5, 7, 6, 3, 4, 1, 2]
    >>> lst_sorted
    [1, 2, 3, 4, 5, 6, 7]

    (2)对指定序列进行排序,cmp参数的使用。

    >>> lst = [('b',2),('a',1),('c',3),('d',4)]
    >>> lst_sorted = sorted(lst, cmp=lambda x,y:cmp(x[1],y[1]))
    >>> print lst_sorted
    [('a', 1), ('b', 2), ('c', 3), ('d', 4)]

    (3)key参数的使用,

    >>> lst_sorted = sorted(lst, key = lambda x:int(x.split(' ')[0].split('.')[3]))
    >>> print lst_sorted
    ['192.168.0.1 Success', '192.168.0.2 Success', '192.168.0.10 Fail']

    (4)reverse参数的使用。

    >>> lst = ['192.168.0.1 Success','192.168.0.10 Fail','192.168.0.2 Success']
    >>> lst_sorted = sorted(lst, key = lambda x:int(x.split(' ')[0].split('.')[3]), reverse=True)
    >>> print lst_sorted
    ['192.168.0.10 Fail', '192.168.0.2 Success', '192.168.0.1 Success']

     

  • 相关阅读:
    sqlserver游标使用误区
    工作笔记——sqlserver引号的运用
    疯狂JAVA——数组
    工厂模式、单例和多例
    数据库数据交互详解(一)
    2016-4-6
    2016-4-5 博问问题、答题和查看收获
    Maven+Spring Batch+Apache Commons VF学习
    你忽视的静态类的作用(必看)
    Wireshark抓包工具使用教程以及常用抓包规则
  • 原文地址:https://www.cnblogs.com/linyfeng/p/9147535.html
Copyright © 2020-2023  润新知