zoukankan      html  css  js  c++  java
  • 【Python之路】特别篇--Python切片

    字符串切片操作

    切片操作符是序列名后跟一个方括号,方括号中有一对可选的数字,并用冒号分割。

    注意: 数是可选的,而冒号是必须的。

    consequence[start:end:step]

    切片操作符中的第一个数(冒号之前)表示切片开始的位置,第二个数(冒号之后)表示切片到哪里结束,第三个数(冒号之后)表示切片间隔数

    如果不指定第一个数,Python就从序列首开始。如果没有指定第二个数,则Python会停止在序列尾。

    ☛ (序列首与序列尾 依据step方向决定 !)

     

    注意: 返回的序列从开始位置开始 ,刚好在结束位置之前结束。

    即开始位置是包含在序列切片中的,而结束位置被排斥在切片外。( 前闭后开 !)

    • step为正,则从左到右切片,如果start > end 则为空
    • step为负,则从右到左切片,如果start < end 则为空

    • startend 填空,前者表示最开始,后者表示最后一个,

    • 同时为空的时候,表示取所有。至于方向,取决于step

     

    >>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    >>> a[:]
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    
    >>> a[::2]
    [1, 3, 5, 7, 9]
    
    >>> a[1:6:2]
    [2, 4, 6]
    
    >>> a[8:3:-1]  
    [9, 8, 7, 6, 5]    # 右-》左切片,step 为1,a[8]=9, a[7]=8, ... a[4]=5, 8-3=5个
    
    >>> a[10:0:-2]
    [10, 8, 6, 4, 2]   # 右-》左切片, 切片的时候,不存在 index 越界情况
    
    >>> a[0:10:-2]     # start < end , step 为负, 方向为右-》左,第一个是 a[0], a[0]的左边就再也没有值了。为空
    []
    
    >>> a[::-2]        # a[:]表示取所有,step 为负就反方向
    [10, 8, 6, 4, 2]
    
    >>> a[5::-2]       # 右-》左,结果等价 a[5:0:-2] a[5]=6, a[3]=4, a[1]=2
    [6, 4, 2]
    
    >>> a[:5:-2]       # 右-》左, 等价于 a[9:5:-2] a[9]=10, a[7]=8 
    [10, 8]
    

    总结:

    1. start 和 end 不填,或者其中一个不填,都是指代获取所有,然后根据 step 确定方向。

    2. step:表示取值的步长,默认为1,步长值不能为0。

    3. 因此任意一个序列结构数据的索引范围为 -len(consequence) 到 len(consequence)-1 范围内的连续整数。

    4. 当使用冒号(:)对序列进行切片取值时,你所输入的无论是start_index或者end_index,都不必局限于 -len(consequence) 到 len(consequence)-1 之间因为只有当你输入的索引号处于这个区间时才真正有效,而当你输入的索引号超出这个范围时,python会自动将start_index或end_index设定为缺省值(即第一个对象和最后一个对象)。

    额外:

    >>> a=[1,2,3,4,5,6,7]   
    >>> a[len(a)-1]   
    7   
    >>> a[-len(a)]   
    1   

    其中a[len(a)-1]等同于a[-1],a[-len(a)]等同于a[0],分别表示序列的最后一个和第一个对象。

  • 相关阅读:
    JDBC的异常
    JDBC的事务
    JDBC的数据类型
    JDBC的结果集
    JDBC操作MySQL出现:This result set must come from a statement that was created with a result set type of ResultSet.CONCUR_UPDATABLE, ...的问题解决
    JDBC的Statement对象
    JDBC连接数据库
    JDBC驱动类型
    JDBC实例代码
    java与javax的区别分析(转)
  • 原文地址:https://www.cnblogs.com/5poi/p/6354180.html
Copyright © 2011-2022 走看看