zoukankan      html  css  js  c++  java
  • Python学习笔记4 高级特性_20170618

    # 切片(获取list / tuple / 字符串 中指定的元素)

    l = list(range(10))
    l[0:3]
    l[:3] # 0可以省略
    l[:] # 全部
    l[3:] # 最后的可以省略
    l[-2:-1] # 负数下标,见python笔记2中介绍
    l[-10:] # 取最后10个数
    l[::2] # 所有数,每个两个取出

    # 迭代

    • 通过 for ... in ...
    • 可迭代对象:list、tuple、字符串已经在pythonb笔记2中提到了。
    • 判断是否可迭代
    from collections import Iterable
    isinstance('abc', Iterable)
    • 将 list 转化成可以使用下标操作
    for i, value in enumerate(['A','B','C']) :
        print(i, value)
    • 同时引用两个变量
    for x,y in [(1,2), (3,4)] :
        print(x, y)

    # 列表生成式(一句话生成需要的 list)

    • range
    list(range(2,10))
    • 通用方法
    [x*x for x in range(1,10)]
    [x*x for x in range(1,10) if x%2 == 0]
    [m+n for m in 'ABCD' for n in '12345']
    • dict 情况
    d = {'x':'A', 'y':'B'}
    >>>[k+'='+c for k,v in d.items()]
    ['x=A', 'y=B']

    # 生成器(得到的是“函数”规则,而非结果)

    • 列表生产式相关(将中括号改成小括号)
    g = (x*x for x in range(10))
    >>>next(g) # 获得生成器的结果
    • 函数相关(在需要停的位置添加yield,比如改 print 为 yield)
    # 函数
    def dplist(l) : 
        for sub in l :
            print(sub)
        return 'done'
    
    # 生成器
    def dplist(l) : 
        for sub in l :
            yield(sub)
        return 'done'

      添加了 yield 的地方更像是一个函数的运行断点,每次运行都是承接上次的运行结果。不会循环,到末了就会报终止错误,该错误可以catch

    • 捕获错误
    >>>def dplist() : 
        for sub in range(10) :
            yield(sub)
        return 'done'
    
    
    >>>g = dplist()
    >>>while True: try: x=next(g) print('g = ', x) except StopIteration as e: print('Genearator return vaue : ', e.value) break

    # 迭代器

    可以用于for循环的:list、tuple、dict、set、str、生成器(generator)等

    • 以上可以直接作用于 for 的,称为“可迭代对象”(Iterable)

      判断方法

    from collections import Iterable
    >>>isinstance([], Iterable)
    • “迭代器对象”(Iterator)
    from collections import Iterator
    >>>isinstance([], Iterator)

    生成器才是“迭代对象”,可以使用next

    list、tuple、dict、set、str、生成器(generator)是“可迭代”对象,不能使用next

    • Iterable转化为Iterator,使用 iter()
    isinstance(iter([]), Iterator)
    • 迭代器什么用:

      迭代器因为是一种规则,所以理论上可以表示所有的整数。但是诸如 list 就不可以。

  • 相关阅读:
    假设用一个名为text的字符串向量存放文本文件的数据,其中的元素或者是一句话或者是一个用于表示段分隔的空字符串。将text中第一段全改为大写形式
    迭代器介绍
    从cin读入一组词并把它们存入一个vector对象,然后设法把所有词都改写为大写字母。
    标准库类型vector
    css 滤镜之AlphaImageLoader
    css设置背景图片自适应
    网易云音乐怎么免费下载付费歌曲
    font-family,font-size,color
    css设置图片居中、居左、居右
    数据库语句之建表、拷贝数据表
  • 原文地址:https://www.cnblogs.com/alexYuin/p/7044453.html
Copyright © 2011-2022 走看看