• [PY3]——内置数据结构(9)——线性结构与切片/命名切片slice()


    线性结构的总结

    列表list  元组tuple  字符串str  bytes  bytearray的共同点:

    • 都是顺序存储、顺序访问的;
    • 都是可迭代对象;
    • 都可以通过索引访问

    线性结构的特征:

    • 可迭代
    • 可通过len获取长度
    • 可以使用下标操作符通过索引访问
    • 可以切片

    补充三个函数:

    • enumerate() 同时获取index和value
    • next()获取一个迭代器的下一个值
    • iter()把一个可迭代对象转化成一个迭代器


    切片操作[start:stop]

    # 注意:以下几条规则的优先级,是按照顺序依次排序的

    In [12]: lst=list(range(10)) In [13]: lst Out[13]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # 访问lst的一段,从start开始到stop结束,但不包含stop In [14]: lst[3:7] Out[14]: [3, 4, 5, 6] # 当start省略时表示从头开始,当stop省略时表示直到末尾 In [15]: lst[:7] Out[15]: [0, 1, 2, 3, 4, 5, 6] In [16]: lst[3:] Out[16]: [3, 4, 5, 6, 7, 8, 9] In [17]: lst[:] Out[17]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # 支持负数索引,负数索引实际上可以转化为 len(lst)+index In [18]: lst[-5:-3] //[10+(-5)=5,10+(-3)=7] Out[18]: [5, 6] In [25]: lst[3:-1] //[3,10+(-1)=9] Out[25]: [3, 4, 5, 6, 7, 8] # 当start>=stop时,返回空列表 In [21]: lst[100:] //100>-1 Out[21]: [] In [22]: lst[:-100] //0>10+(-100) Out[22]: [] In [23]: lst[3:1] //3>1 Out[23]: [] In [24]: lst[3:3] //3=3 Out[24]: [] # 当start超出索引范围start=0,当stop超出索引范围stop=-0 In [19]: lst[-100:] Out[19]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] In [20]: lst[-100:100] Out[20]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

    [start:stop:step]

    In [27]: lst[::2]
    Out[27]: [0, 2, 4, 6, 8]
    
    In [28]: lst[::-2]
    Out[28]: [9, 7, 5, 3, 1]
    
    In [30]: lst[::-1]
    Out[30]: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
    
    In [35]: lst[10:1:-2]
    Out[35]: [9, 7, 5, 3]
    
    In [36]: lst[10:1:2]
    Out[36]: []

    命名切片slice( )

    items=[0,1,2,3,4,5,6]
    a=slice(2,4)
    print(a.start,a.stop,a.step)  #切片的start、stop、step三元组slice()中都可以指定
       2 4 None
    print(a)
       slice(2, 4, None)
    
    #使用已命名的a,可以做什么?
    print(items[a])  #等价于print(items[2:4])
        [2, 3]
    items[a]
    =[10,11];print(items) [0, 1, 10, 11, 4, 5, 6]
    del items[a];print(items) [0, 1, 4, 5, 6]
  • 相关阅读:
    李洪强经典面试题27
    李洪强经典面试题26(选择题)
    java中InputStream String
    [Android]Android5.0实现静默接听电话功能
    Please verify that your device’s clock is properly set, and that your signing certificate is not exp
    CentOS7虚拟机桥接设置及问题
    GuozhongCrawler系列教程 (5) TransactionRequest具体解释
    js之substr和substring的差别
    hdu 3549 Flow Problem
    JSP与HTML的差别
  • 原文地址:https://www.cnblogs.com/snsdzjlz320/p/6672090.html
Copyright © 2020-2023  润新知