Python高级特性

来源:互联网 发布:linux kill -9怎么用 编辑:程序博客网 时间:2024/06/03 15:58

最近开始学习Python,利用空闲时间记录部分笔记,方便日后回顾,同时,希望能帮助到正在学习中的同胞,如果文章内容有出入,欢迎随时指正。从本文开始,所有示例代码以Spyder环境为例。

  1. 切片
    类似其它编程语言中的subString函数,针对获取list或tuple的指定索引范围的操作,Python提供了切片操作符,示例如下

    L=['Alice','Bob','Ten','Jack']T=(0,1,2,3)print (L[0:3])print(L[-3:-1])print(T[:2])

    运行结果:

    ['Alice', 'Bob', 'Ten']['Bob', 'Ten'](0, 1)

    L[0:3]表示,从索引0开始取,直到索引3为止,但不包含索引3。如果第一个索引是0,可以省略不写,如L[:3]。切片也支持倒数,倒数时,第一个元素的索引是-1。

  2. 迭代
    在Python中,通过for…in循环来遍历list或其他对象,这种遍历称为迭代。

    D={'a':1,'b':2,'c':3}for key in D:    print (key)

    运行结果:

    acb

    Python可对list、dict等进行迭代,也可以对字符串进行迭代,但依然有部分对象不可以进行迭代,如果不确定时,可以先判断是否支持迭代。

    from collections import Iterableprint(isinstance('abc',Iterable))print(isinstance([1,2,3],Iterable))print(isinstance(123,Iterable))

    运行结果:

    TrueTrueFalse
  3. 列表生成式
    Python内置了强大而又简单的方法,即可以创建list生成式。示例如下:

    L = list(range(1,11))print(L)P = [x*x for x in range(1,11)]print(P)Q = [x*x for x in range(1,11) if x%2== 0]print(Q)
    运行结果:
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10][1, 4, 9, 16, 25, 36, 49, 64, 81, 100][4, 16, 36, 64, 100]
  4. 生成器
    为解决list生成过大所造成的内存浪费,Python提供了一种边循环边计算的机制,称为生成器:Generator。这样就不必创建完整的list,从而节省了大量的空间。

    G = (x*x for x in range(10))print (G)

    运行结果:

    <generator object <genexpr> at 0x0000023783AE9B48>

    将列表生成式的[]改成(),就可以创建一个Generator。更复杂的Generator将在后期做进一步补充。

  5. 迭代器
    可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。前面已经写了如何判断是否是可迭代对象,同样,可以使用isinstance()判断一个对象是否是Iterator对象。

    from collections import Iteratorprint(isinstance((x for x in range(10)),Iterator))print(isinstance([],Iterator))print(isinstance({},Iterator))

    运行结果:

    TrueFalseFalse

    生成器都是Iterator对象,但list、dict、字符串等虽然是Iterable,却不是Iterator。

0 0
原创粉丝点击