• Python快速学习-高级特性


    1.切片

    取一个list或tuple的部分元素是非常常见的操作

    L = ['hello','the','world','and','my','love']

    取前三个元素 L[0:3],L[:3]

    取倒数第一个元素:L[-1](倒数第一个元素的索引-1)

    取后两个元素:L[-2:]

    创建0-99的数列:L=list(range(100))

    取前十个元素:L[:10]

    取后十个元素:L[-10:]

    前11-20个元素:L[10:20]

    前10个数,每两个取一个:L[:10:2]

    所有数,每5个取一个:L[::5]

    复制一个list:L[:]

    tuple也是一种list,唯一区别是tuple不可变,切片同样适用于tuple,结果仍然是tuple(0,1,2,3,4,5)[:3] =>(0,1,2)

    字符串也可以看成一种list,也可以用于切片 'ABCDEF'[:3]=>'ABC'

    python中没有针对字符串的截取函数,只需要切片操作就可以。

    2.迭代

    dict迭代:

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

    迭代value

    >>>for value in d.values()

    同时迭代key和value

    >>>for k, v in d.items()

    字符串迭代:

    >>>for ch in 'ABC':
    ...   print(ch)

    判断一个对象是否是可迭代对象

    from collections import Iterable
    >>>isinstance('abc',Iterable) #str是否可迭代
    True
    >>>isinstance([1,2,3],Iterable) #list是否可迭代
    True
    >>>isinstance(123,Iterable) #整数是否可迭代
    False

    list的下标循环迭代,通过enumerate内置函数可以把一个list变成索引-元素对

    >>>for i,value in enumerate(['a','b','c']):
    ...    print(i,value)

    3.列表生成式(生成list)

    >>>[x * x for x in range(1,11)]
    [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
    >>>[x * x for x in range(1,11) if x % 2 ==0]
    [4, 16, 36, 64, 100]
    >>> [m + n for m in 'ABC' for n in 'XYZ']
    ['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

    4.生成器

    要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator

    >>> L = [x * x for x in range(10)]
    >>> L
    [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
    >>> g = (x * x for x in range(10))

    要把fib函数变成generator,只需要把print(b)改为yield b就可以了

    def fib(max):
        n, a, b = 0, 0, 1
        while n < max:
            yield b
            a, b = b, a + b
            n = n + 1
        return 'done'

    这就是定义generator的另一种方法。如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator。

    5迭代器

    凡是可作用于for循环的对象都是Iterable类型;

    凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;

    集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象;

    Python的for循环本质上就是通过不断调用next()函数实现的;

    能写一行代码解决问题,绝不写5行。请始终牢记,代码越少,开发效率越高

  • 相关阅读:
    【计算机视觉】OpenCV篇(2)
    【计算机视觉】OpenCV篇(1)
    傅立叶分析与小波分析整理
    极简Python DeBug工具——PySnooper
    透过SourceTree再谈Git
    佳文赏析:How to uninstall Linux
    AI佳作解读系列(四)——数据增强篇
    AI佳作解读系列(三)——深度学习中的合成数据研究
    java基础 序列化反序列化流 实现Serializable 接口 自动装载序列号到对象文本文件如修改不能反序列化对象文本,除非自定义long型常量 打印流
    java基础IO流 复制键盘录入的目录,复制其中的.java文件到指定目录,指定目录中有重名,则改名 对加密文件计算字母个数
  • 原文地址:https://www.cnblogs.com/fxust/p/7140827.html
Copyright © 2020-2023  润新知