• 7.列表切片及复制


    列表切片

    1.列表的扩展

    例子1:

    >>> a = [1, 2, 3]

    >>> b = ['xiaohong','xiaozhang','xiaoming']

    >>> print (a)

    [1, 2, 3]

    >>> print (b)

    ['xiaohong', 'xiaozhang', 'xiaoming']

    >>> a.extend(b)

    >>> print a

    [1, 2, 3, 'xiaohong', 'xiaozhang', 'xiaoming']

     

    例子2;我们也可以用 "+" 来实现形同的效果

    >>> print a

    [1, 2, 3]

    >>> print b

    ['xiaohong', 'xiaozhang', 'xiaoming']

    >>> a + b

    [1, 2, 3, 'xiaohong', 'xiaozhang', 'xiaoming']

     

    2、切片

    切边的原则是顾头不顾尾。我们根据列表的下标来截取指定范围内的数据。

    >>>

    >>> a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

     

    例子1截取中间位置的数据

    >>> a[3:7]   

    [3, 4, 5, 6]

    截取下标3-7的内容,但是不包含下标为7的内容

    还可以这样写

    print (a[a.index(3):a.index(7)])

    [3, 4, 5, 6]

     

    例子2截取到末尾

    >>> a[7:]

    [7, 8, 9]

     

    在列表长度未知的情况下,我们还可以用负数来截取。

    >>> a[-3:]  

    [7, 8, 9]

     

     

    用负数来截取的时候需要注意,不要写成[-2:-4]。写法也要遵循从左到右的顺序。

    >>> a[-4:-2]

    [6, 7]

     

    例子3从0位置开始截取

    >>> a[:5]

    [0, 1, 2, 3, 4]

     

    例子4:步长切片

    >>> a = [1,2,3,4,5,6,7,8,9]

    >>> print (a[::2])  从0到-1 从开始到最后步长为2.0和-1可以省略。

    [1, 3, 5, 7, 9]

    >>> print (a[1::2])

    [2, 4, 6, 8]

    >>> 

     

     

    3.列表的复制

       列表的复制有 "浅复制"和"深复制"之分

       例子1:浅复制

    >>> a = [1,2,3,4]

    >>> b = a.copy()

    现在a b 列表内容一样

    >>> print (a)

    [1, 2, 3, 4]

    >>> print (b)

    [1, 2, 3, 4]

     

    现在修改a列表的值,不会影响b列表的内容

    >>> a[1] = 'zhangsan'

    >>> print (a)

    [1, 'zhangsan', 3, 4]

    >>> print (b)

    [1, 2, 3, 4]

     

    但是当a的列表中有子列表的时候就不同了。

    >>> print (a)

    [1, 2, ['a', 'b', 'c'], 3, 4]

    >>> b = a.copy()

    >>> print (b)

    [1, 2, ['a', 'b', 'c'], 3, 4]

    修改列表a中子列表中的值,b的子列表中的值也跟着变化。所有说a.copy()只复制了第一层。所以我们称为浅复制。

    >>> a[2][0] = 'xiaoming'

    >>> print (a)

    [1, 2, ['xiaoming', 'b', 'c'], 3, 4]

    >>> print (b)

    [1, 2, ['xiaoming', 'b', 'c'], 3, 4]

      

    例子2:深复制

    import copy

    a = [1,2,['a','b','c'],3,4]

    b = copy.deepcopy(a)

    >>> print (a)

    [1, 2, ['a', 'b', 'c'], 3, 4]

    >>> print (b)

    [1, 2, ['a', 'b', 'c'], 3, 4]

     

    修改a列表中的子列表的值

    a[2][0] = 'xiaoming'

    >>> print (a)

    [1, 2, ['xiaoming', 'b', 'c'], 3, 4]

    >>> print (b)

    [1, 2, ['a', 'b', 'c'], 3, 4]

     

    我们发现b列表的值没有变。

  • 相关阅读:
    分布式锁实战,分布式锁方案选择
    数据库索引调优技巧
    GraphQL
    PDF添加水印
    word添加水印,.NET执行宏
    『OpenCV』在Cmake中设置指定的OpenCV路径
    『论文笔记』ArcFace: Additive Angular Margin Loss for Deep Face Recognition
    Dapr微服务应用开发系列3:服务调用构件块
    ClearLinux安装教程
    tail命令学习实例
  • 原文地址:https://www.cnblogs.com/pangbing/p/8746567.html
Copyright © 2020-2023  润新知