• 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列表的值没有变。

  • 相关阅读:
    /bin,/sbin,/usr/sbin,/usr/bin 目录
    centos开放端口8080
    centos 创建用户组及用户
    oracle内存优化
    ORACLE概要文件
    【刷题】洛谷 P3834 【模板】可持久化线段树 1(主席树)
    【总结】莫比乌斯反演
    【刷题】洛谷 P3768 简单的数学题
    【刷题】BZOJ 4816 [Sdoi2017]数字表格
    【刷题】BZOJ 2693 jzptab
  • 原文地址:https://www.cnblogs.com/pangbing/p/8746567.html
Copyright © 2020-2023  润新知