• python 切片操作 slice


    原文参考:https://www.jianshu.com/p/15715d6f4dad

    原文讲的非常清楚,很精彩。

    格式:    字符串[start,end,step]      左开右闭         索引左边从0开始,右边从-1开始。

    [:]   从开头  (默认位置0)   到结尾   (默认位置-1)   的整个字符串。

     [start:]  从start 提取到结尾

     [:end]  从开头提取到end - 1     

     [start:end]  从start 提取到end - 1

     [start:end:step] 从start 提取到end - 1,每step 个字符提取一个

     左侧第一个字符的位置/偏移量为0,右侧最后一个字符的位置/偏移量为-1




     

    列表切片:

    list [start_index, end_index, step]  step可正可负,为正时表示从左往右取,为负时表示从右往左取

     步长-1:表示从右往左取,开始1,结束3,表示从左往右取,两个互相矛盾,所以结果为空。

     当end_index大于列表总长度时,可以正 确取值,取到结尾处。

    当start_index为6,end_index为3时,取不到值是因为step默认为1,即从左往右取,而6:3是从右往左取。

     这样将step写为-1时,就可以取到了。

     此时step默认为1,即从左往右取,-6:-1也是从左往右取的意思。所以可以取到。

     此时step默认为1,即从左往右取,end_indx没有时默认是取到终点,从左往右取的终点就是最右边。

     step为-1,表示从右往左取,end_index没有默认为取到终点,此时的终点是最左边。

    切片操作:

    1。 切取单个元素

    2。切取完整对象

    3。start_index和end_index全为正索引(+)的情况

    4。start_index和end_index全为负索引(-)的情况。

    5。start_indx和end_index正(+)负(-)混合索引的情况

    6。多层切片操作

    7。切片操作的三个参数可以用表达式

    8。切片操作的对象可以是列表、字符串,元组等可迭代的对象。

    9。常用切片:取偶数位置,取奇数位置,修改单个元素,在某个位置插入元素,替换一部分元素

    五、 总结

    (一)start_index、end_index、step三者可同为正、同为负,或正负混合。但必须遵循一个原则,即:当start_index表示的实际位置在end_index的左边时,从左往右取值,此时step必须是正数(同样表示从左往右);当start_index表示的实际位置在end_index的右边时,表示从右往左取值,此时step必须是负数(同样表示从右往左),即两者的取值顺序必须相同。

    (二)当start_index或end_index省略时,取值的起始索引和终止索引由step的正负来决定,这种情况不会有取值方向矛盾(即不会返回空列表[]),但正和负取到的结果顺序是相反的,因为一个向左一个向右。

    (三)step的正负是必须要考虑的,尤其是当step省略时。比如a[-1:],很容易就误认为是从“终点”开始一直取到“起点”,即a[-1:]= [9, 8, 7, 6, 5, 4, 3, 2, 1, 0],但实际上a[-1:]=[9](注意不是9),原因在于step省略时step=1表示从左往右取值,而起始索引start_index=-1本身就是对象的最右边元素了,再往右已经没数据了,因此结果只含有9一个元素。

    (四)需要注意:“取单个元素(不带“:”)”时,返回的是对象的某个元素,其类型由元素本身的类型决定,而与母对象无关,如上面的a[0]=0、a[-4]=6,元素0和6都是“数值型”,而母对象a却是“list”型;“取连续切片(带“:”)”时,返回结果的类型与母对象相同,哪怕切取的连续切片只包含一个元素,如上面的a[-1:]=[9],返回的是一个只包含元素“9”的list,而非数值型“9”。




  • 相关阅读:
    2011年全球手机市场十大事件
    异地求学催生网卖“生活费” 家长称不听话退款
    pygame库常用
    pygame_鼠标事件
    在Python和Django模板系统中的真值
    Django seeting配置(一)
    Django数据库配置
    转载CSS boxflex属性(弹性盒子模型)
    java volatile变量
    并发资料收集
  • 原文地址:https://www.cnblogs.com/yoyoma0355/p/12456758.html
Copyright © 2020-2023  润新知