zoukankan      html  css  js  c++  java
  • 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列表的值没有变。

  • 相关阅读:
    CREATE AGGREGATE
    技术文档列表
    jQuery 判断表单中多个 input text 中至少有一个不为空
    Java实现 蓝桥杯 算法提高 奥运会开幕式
    Java实现 蓝桥杯 算法提高 最长滑雪道
    Java实现 蓝桥杯 算法提高 最长滑雪道
    Java实现 蓝桥杯 算法提高 最长滑雪道
    Java实现 蓝桥杯 算法提高 最大值路径
    Java实现 蓝桥杯 算法提高 最大值路径
    Java实现 蓝桥杯 算法提高 最大值路径
  • 原文地址:https://www.cnblogs.com/pangbing/p/8746567.html
Copyright © 2011-2022 走看看