zoukankan      html  css  js  c++  java
  • python利器之切片

     切片

    切片的语法表达式为:[start_index : end_index : step],其中:

    • start_index表示起始索引
    • end_index表示结束索引
    • step表示步长,步长不能为0,且默认值为1

    切片操作是指按照步长,截取从起始索引到结束索引,但不包含结束索引(也就是结束索引减1)的所有元素。

    • python3支持切片操作的数据类型有listtuplestringunicoderange
    • 切片返回的结果类型与原对象类型一致
    • 切片不会改变原对象,而是重新生成了一个新的对象

    下面列表为列:

                                                     图列一

    一个简单的例子:

    alist=['A','B','C','D','E','F']
    ①alist[0:4:1]
    ②alist[0:4] 结果:['A', 'B', 'C', 'D'] ①和②结果一样,因为步长有默认值为1 alist[0:4:2] 结果:['A', 'C']

    省略start_index,保留end_index,这样会从第一个元素开始,切到end_index - 1的元素为止

    alist[:4]  
    ['A', 'B', 'C', 'D']   

    保留start_index,但省略end_index,这样会从起始索引开始,切到最后一个元素为止:

    alist[2:]
    ['C', 'D', 'E', 'F']

    省略start_indexend_indexstep,这样就表示就表示切片整个序列,也就是复制出了一个新的序列:

     alist[:]
    ['A', 'B', 'C', 'D', 'E', 'F']

    省略start_indexend_index,但保留step,表示对整个序列,按照步长整除的规则取值:

    alist[::2]
    ['A', 'C', 'E']

    此时,如果我们将步长设为-1,那么就可以很方便的得到一个反序的序列了

     alist[::-1]
    ['F', 'E', 'D', 'C', 'B', 'A']

    下面这四种表达式是等价的:

    alist[0:4]
    ['A', 'B', 'C', 'D']
    alist[0:-2]
    ['A', 'B', 'C', 'D']
    alist[-6:4]
    ['A', 'B', 'C', 'D']
    alist[-6:-2]
    ['A', 'B', 'C', 'D']

    观察图列一就可以得出,区间一致。

    切片时,一定要保证start_indexend_index的方向与步长step的方向同向,否则会切出空的序列

    alist[0:4:-1]
    []
    alist[3:0:2]
    []

    利用切片功能,编写一个函数trim(str),类似Python中的strip()功能——去除字符串首尾的空格:

    >>> def trim(str):
    ...     while str[:1]==' ':
    ...             str = str[1:]
    ...     while str[-1:] == ' ':
    ...             str = str[:-2]
    ...     return str
    ...
    >>> trim('  abc  hh  welcome!      ')
    'abc  hh  welcome!'
  • 相关阅读:
    pytest_04
    pytest_03
    pytest_02
    CF 1416C XOR Trie
    CF 1413D
    ZOJ 3725 概率dp
    ZOJ 3726
    位运算
    CF1439C 线段树
    unordered_set
  • 原文地址:https://www.cnblogs.com/ltb6w/p/11145034.html
Copyright © 2011-2022 走看看