zoukankan      html  css  js  c++  java
  • Python基础:常用函数

    1:enumerate

    enumerate(sequence, start=0)

           该函数返回一个enumerate对象(一个迭代器)。其中的sequence参数可以是序列、迭代器或者支持迭代的其他对象。该函数返回一个迭代器,其中的next方法返回一个元组,该元组包含从sequence获取的值,以及一个计数值(从start参数开始,该参数默认为0)。该函数的实现类似下面的代码:

    def enumerate(sequence, start=0):
        n = start
        for elem insequence:
            yield n, elem
            n += 1

    实例如下:

    >>> seasons = ['Spring',  'Summer',  'Fall',  'Winter']
    >>> list(enumerate(seasons))
    [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
    
    >>> list(enumerate(seasons,  start=1))
    [(1, 'Spring'),  (2, 'Summer'),  (3, 'Fall'),  (4, 'Winter')]

     

    2:range和xrange

    range(stop)

    range(start,stop, step)

           range()会返回一个包含所有 k 的列表,这里 start <= k < top, 从 start 到stop , k 每次递增 step, step不可以为零,否则将发生错误。该函数经常用在for循环中,如果省略了step,则默认为1。如果省略了start,则默认为0。

           如果step是正数,则生成列表中的最后一个元素是比stop小的,start+i*step型最大的数。如果step是负数,则生成列表中的最后一个元素是比stop大的,start + i*step型最小的树。例子如下

    >>> range(10)
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    >>> range(1, 11)
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    
    >>> range(0, 30, 5)
    [0, 5, 10, 15, 20, 25]
    
    >>> range(0, 10, 3)
    [0, 3, 6, 9]
    
    >>> range(0, -10,-1)
    [0, -1, -2, -3, -4, -5, -6,-7, -8, -9]
    
    >>> range(0)
    []
    
    >>> range(1, 0)
    []

           xrange()类似于range(),不过当有一个很大的范围列表时,xrange()可能更为适合, 因为它不会在内存里创建列表的完整拷贝。它只被用在 for 循环中, 在 for 循环外使用它没有意义。它的性能远高出 range(),因为它不生成整个列表。

     

     

    3:type和isinstance

    class  type(object)

    class  type(name,  bases,  dict)

         一个参数的type,返回任意对象的类型,返回值为一个type对象。推荐使用内置函数isinstance来判断某个对象的类型。

    type()内建函数接收任意的Python对象做为参数并返回他们的类型,不局限于标准类型。它的返回值是一个类型对象。比如:

    >>> s = 'xyz'
    >>> type(s)
    <type 'str'>
    
    >>> type(0+0j)
    <type 'complex'>
    
    >>> type(0.0)
    <type 'float'>
    
    >>> type([])
    <type 'list'>
    
    >>> type(42)
    <type 'int'>

            type函数的返回值<type 'int'>,实际上是一个类型对象。类型本身也是一种对象。

            那么类型对象的类型是什么?:

    >>> type(type(42))
    <type 'type'>
    
    >>> type(int)
    <type 'type'>
    
    >>> type(type)
    <type 'type'>

            没错,所有类型对象的类型都是type,它也是所有Python类型的根和所有Python 标准类的默认元类(metaclass)。

     

            随着Python 2.2 中类型和类的统一。类(class)就是类型(type),实例(instance)是对应类型的对象(object)。(类<—>类型;实例<—>对象)

    >>> class Foo: pass         # old-style class
    >>> foo = Foo()
    
    >>> class Bar(object): pass     # new-style class
    >>> bar = Bar()
    
    >>> type(Foo)
    <type 'classobj'>
    
    >>> type(foo)
    <type 'instance'>
    
    >>>type(Bar)
    <type 'type'>
    
    >>>type(bar)
    <class'__main__.Bar'>

        三个参数的type,返回一个新的type对象。这是一个声明类的动态方式。name字符串参数定义类的名字,并成为类__name__属性;bases元组参数列出该类的所有父类,并成为类的__bases__属性;dict字典参数是包含类内部定义的命名空间,并成为类的__dict__属性。比如,下面两种声明,创建了相同的type对象:

    >>> class X(object):
    ...    a = 1
    
    >>> X = type('X', (object,),dict(a=1))

     

    isinstance(object,  classinfo)

        判断object是否为classinfo的实例(对象),或是其(直接、间接、virtual)子类的实例(对象)。(类<—>类型;实例<—>对象,python2.2之后,实现了类和类型的统一)。

        classinfo可以是class对象(旧式类),也可以是type对象(新式类),或者是class或type对象组成的元组(只能是元组,其他序列不可以)。否则,会引发TypeError异常。

  • 相关阅读:
    ansible使用
    git undo last commit
    metadata简介
    tinyint(4),tinyint(80)有什么区别
    php 打印debug日志
    tinycore Network card configuration during exec bootlocal.sh
    Windows使用CMD命令查看进程和终止进程
    @NotEmpty,@NotNull和@NotBlank的区别
    spring boot 程序启动缓慢的问题(二)
    LocalDateTime的一些用法
  • 原文地址:https://www.cnblogs.com/gqtcgq/p/7247161.html
Copyright © 2011-2022 走看看