• Learning Python 011 高级特性 1


    Python 高级特性 1

    切片

    L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']列表中前上个3个元素:

    L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
    r = []
    
    n = 3
    for i in range(n):
        r.append(L[i])
    
    print(r)

    运行:

    ['Michael', 'Sarah', 'Tracy']

    使用循环,书写的代码量较多,我们可以使用切片的方式:

    L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
    r = L[0:3]
    
    print(r)

    运行:

    ['Michael', 'Sarah', 'Tracy']

    L[0:3]表示:从索引0开始取,直到索引3为止,但不包括索引3

    如果第一个索引是0,可以省略不写:r = L[:3]


    注意:L[-1]取的是L列表中的最后一个元素。

    在来一个例子

    先创建一个0-99的数列L = list(range(100))

    我们在L前10个元素中,每2个元素取一个:

    >>> L[:10:2]
    [0, 2, 4, 6, 8]

    L中所有数,每5个取一个:

    >>> L[::5]
    [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]

    复制一个L

    >>> L[:]
    [0, 1, 2, 3, ..., 99]

    tuple也是一种list,唯一区别是tuple不可变。所以tuple也可以进行切片操作。
    同样的,字符串也可以切片。

    >>> (0, 1, 2, 3, 4, 5)[:3]
    (0, 1, 2)
    >>> 'ABCDEFG'[:3]
    'ABC'
    >>> 'ABCDEFG'[::2]
    'ACEG'

    注意:
    Python没有针对字符串截取函数,只需要切片一个操作就可以完成,非常简单。

    迭代

    迭代就是:通过for循环来遍历这个listtuple

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

    运行输出:

    b 2
    c 3
    a 1

    注意:因为dict的存储不是按照list的方式顺序排列,所以,迭代出的结果顺序很可能不一样

    迭代dict中的keyvalue,还可以这样写:for k, v in d.items()
    迭代dict中的value,还可以这样写程序:for value in d.values()

    迭代字符串,也是一样的:

    >>> for ch in 'ABC':
    ...     print(ch)
    ...
    A
    B
    C

    只要作用于一个可迭代对象for循环就可以正常运行,而我们不太关心该对象究竟是list还是其他数据类型。

    问题就是如何判断一个对象是否是可迭代对象

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

    使用collections模块的Iterable类型判断。

    介绍一个小技巧Python里有一个函数,它可以将一个list变成索引-元素对的形式,这个函数就是enumerate函数:

    >>> for i, value in enumerate(['A', 'B', 'C']):
    ...     print(i, value)
    ...
    0 A
    1 B
    2 C

    参考网站:
    http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431756919644a792ee4ead724ef7afab3f7f771b04f5000

  • 相关阅读:
    textarea输入限制
    MyBatis 下使用SQLite
    天气预报
    导出Excel、csv
    WDK 常用的几个函数
    Windows 内核 hello world
    内核模式下的文件操作
    Windows 内核编程初涉
    Windows 内地管理
    Windows 内核 同步处理
  • 原文地址:https://www.cnblogs.com/aobosir/p/5928636.html
Copyright © 2020-2023  润新知