美文网首页
Python 切片与迭代

Python 切片与迭代

作者: keinYe | 来源:发表于2018-12-25 21:58 被阅读17次

    切片

    切片是 python 中截取列表、元组或字符串中部分元素的快捷方法,使用 [] 来实现。

    切片的完整写法 [起始元素:终止元素:间隔元素个数]

    先来看一个简单的示例

    #!/usr/bin/env python3
    # -*- coding:utf-8 -*-
    
    list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    
    print(list[0:2])
    print(list[:2])
    print(list[:8:2])
    print(list[-2:-1])
    print(list[-2:])
    print(list[-6::2])
    print(list[:])
    print(type(list[:2]))
    

    以上代码运行结果如下

    [0, 1]
    [0, 1]
    [0, 2, 4, 6]
    [9]
    [9, 10]
    [5, 7, 9]
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    <class 'list'>
    

    从以上示例的执行结果,我们可以得到以下结论:

    1. list[0:2], 表示从索引 0 开始直至索引 2 截止,但是不包括索引 2 的值。
    2. 当起始索引为 0 时可以省略起始索引,此时可写作 list[:2]。
    3. 切片同样支持负值索引。
    4. 当使用负值索引时,结束索引为 -1 时,可省略结束结束索引。
    5. 可是使用 list[:] 来完整复制一个列表。
    6. list 的切片同样是一个 list。

    切片同样可应用在元组上,元组的切片同样是一个元组且不可修改。

    >>> slice = (0, 1, 2, 3, 4, 5)[:3]
    >>> print(slice)
    (0, 1, 2)
    >>> type(slice)
    <class 'tuple'>
    >>> slice[0] = 0
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'tuple' object does not support item assignment
    >>>
    

    迭代

    迭代在维基百科上的解释如下

    迭代是重复反馈过程的活动,其目的通常是为了接近并到达所需的目标或结果。每一次对过程的重复被称为一次“迭代”,而每一次迭代得到的结果会被用来作为下一次迭代的初始值。

    我么通过 for 循环来遍历 list、tuple、dict 等,这种遍历我们称之为迭代。

    #!/usr/bin/env python3
    # -*- coding:utf-8 -*-
    
    list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    
    for n in list:
        print(n)
    

    以上是一个简单的迭代,通过 for 循环我们可以依次获取 list 中的元素。
    执行结果如下

    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    

    在 python 中只要是可迭代对象,均可以使用 for 循环依次获取对象的内容。我们可以通过 isinstance 函数来判断一个对象是否是可迭代对象。

    #!/usr/bin/env python3
    # -*- coding:utf-8 -*-
    from collections import Iterable
    
    print(isinstance('123', Iterable))
    print(isinstance([1,2, 3], Iterable))
    print(isinstance(123, Iterable))
    

    以上代码执行结果如下

    True
    True
    False
    

    从执行结果上我们可以看出字符串「'123'」和列表「[1, 2, 3]」是可迭代对象,而整数 123 是不可迭代对象。

    相关文章

      网友评论

          本文标题:Python 切片与迭代

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