美文网首页Python
Python 学习笔记(3) - 高级特性

Python 学习笔记(3) - 高级特性

作者: 57fc17b7d598 | 来源:发表于2016-03-16 13:29 被阅读28次

    1. 切片

    • 语法:list = list[起始索引:截止索引:间隔数量]
    • 解释:
      对于str或是list可以采用[0]集合索引的方式取其中某个元素
      但是单独数字作为索引只能获取其中一个元素
      通过切片的方式可以获取部分或全部的元素
      返回类型为list,即集合
      其中索引如果为0可以不写
    • 例如:
      <pre>

    定义集合,也可以string = "string"

    string = ["s", "t", "r", "i", "n", "g"]

    中间取值,返回['r', 'i', 'n']

    string[-4:-1]

    取前三个,0可以不写,返回['s', 't', 'r']

    string[:3]

    取后三个,0可以不写,返回['i', 'n', 'g']

    string[-3:]

    取偶数位,返回['s', 'r', 'n']

    string[:6:2]
    </pre>

    2. 列表生成式

    • 语法:[表达式 for if]
    • 解释:
      目的是为了快速的生成list集合
      表达式:list中每一个元素将以什么方式呈现
      for:for循环,可以有多个
      if:必须跟在for后面,可有可无
      讲解:如例1拆分开来,将从for开始,range(10)会生成从0到9的十个数进行循环遍历,每次取得的值赋予num变量,第一次循环时,num变量的值为0,这时候如果后面有if语句,就会执行if语句进行判断,该值是否需要保存,if中返回True的话则保存,反之则跳转到下一次循环,如果没有if语句默认直接保存,保存的形式按照例1中表达式是直接保存,不做任何运算,保存完之后list中的数据应该是[0]。
    • 例子
      <pre>

    例1 返回 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

    [num for num in range(10)]

    例2 返回 ['bx', 'by', 'bz']

    [x + y for x in "abc" if x == "b" for y in "xyz" if 1 == True]
    </pre>

    3. 生成器 Generator

    • 语法:(表达式 for if)
    • 解释:用法和列表生成式几乎一样,只是将[]中括号变成了小括号()
    • 区别:列表生成式执行完后会立即生成一个list,里面包括了计算出的所有值,而生成器执行完后会得到一个generator的对象,对象里面保存的是每一个值应得的计算方式,而具体的值却还没有生成,等你需要用的时候,可以将其值一一取出
    • 例子1
      <pre>

    定义生成器

    a = (x for x in range(10))

    输出生成器信息 返回 <generator object <genexpr> at 0x00000056E0CCA5C8>

    a

    取出生成器中的值 返回 0

    next(a)

    取出生成器中的值 返回 1

    next(a)

    取出生成器中的值 返回 2

    next(a)
    </pre>

    • 例子2
      <pre>

    定义生成器

    a = (x for x in range(10) if x % 2 != 0)

    输出生成器信息 返回 <generator object <genexpr> at 0x00000056E0CCA570>

    a

    取出生成器中的值 返回 1 3 5 7 9

    for b in a: print(b)
    </pre>

    • 例子3
      <pre>

    定义函数

    def gen(num):
    # for循环
    for i in range(num):
    # 中断返回
    yield(i)

    获取函数生成器

    n = gen(6);

    循环打印生成器内容 返回 0 1 2 3 4 5

    for x in n:
    print(x)
    </pre>

    4. 捕获异常

    • 语法:try [except] [finally]
    • 例子:
      <pre>

    专业抛异常30年

    def ec30(year):
    if not isinstance(year, int):
    raise TypeError("错误的年份!")
    if year < 10:
    return "Perfect Excetpion"
    else:
    raise Exception(str(year) + "年")
    return "你能看到这句话吗?"

    捕获异常

    try:
    result = ec30(5)
    print(result)
    except Exception as ex:
    print("居然会出现错误?", ex)
    else:
    print("完美!")
    finally:
    print("这句话会在什么时候出现?")
    </pre>

    • 结果:
      <pre>
      ec30(5)

    Perfect Excetpion

    完美!

    这句话会在什么时候出现?

    ec30(15)

    居然会出现错误? 15年

    这句话会在什么时候出现?

    ec30("15")
    居然会出现错误? 错误的年份!
    这句话会在什么时候出现?
    </pre>

    相关文章

      网友评论

        本文标题:Python 学习笔记(3) - 高级特性

        本文链接:https://www.haomeiwen.com/subject/njvflttx.html