zoukankan      html  css  js  c++  java
  • python切片

    本篇将介绍Python的切片操作,切片支持的数据类型有列表、字符串、元祖,更多内容请参考:Python学习指南

    切片是什么?

    切片操作符是序列名后跟一个方括号,方括号中有一对可选的数字,并用冒号分隔。注意这与你使用的索引操作符十分相似。记住数是可选的,而冒号是必须的。切片分隔符中的第一个数(冒号之前)表示序列开始的下标,第二个数(冒号之后)表示切片结束的下标,第三个数(冒号之后)表示切片间隔数。如果不指定第一个数,Python就从序列首开始。如果没有指定第二个数,则Python会停止在序列尾。注意,返回的序列从开始位置开始 ,刚好在 结束 位置之前结束。即开始位置是包含在序列切片中的,而结束位置被排斥在切片外。这样,shoplist[1:3]返回从位置1开始,包括位置2,但是停止在位置3的一个序列切片,因此返回一个含有两个项目的切片。shoplist[:]返回整个序列的拷贝。shoplist[::3]返回位置3,位置6,位置9...的序列切片。也可以用负数做切片,负数用在从序列尾开始计算的位置。例如,shoplist[::-1]会返回倒序序列切片。

    切片的操作

    取一个list或tuple的部分元素时非常常见的操作。比如,一个list如下:

    >>>L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
    #取前三个元素
    >>>L[0:3]
    ['Michael', 'Sarch', 'Tracy']
    

    如果第一个索引是0,还可以省略

    L[:3]
    ['Michael', 'Sarch', 'Tracy']
    
    #从索引1开始,取出2个元素
    >>>L[1:3]
    ['Sarch', 'Tracy']
    

    类似的,既然Python支持L[-1]取倒数第一个元素,那么它同样支持倒数切片,试试:

    >>>[-2:]
    ['Bob', 'Jack']
    >>>L[-2:-1]
    ['Bob']
    

    记住,倒数第一个元素的索引是-1
    切片操作十分有用,我们先创建一个0-99的数列:

    >>>L = list(range(100))
    >>>L
    [0,1,2,3,4,...,99]
    

    可以通过切片轻松取出某一段数列。比如前10个数:

    >>>L[:10]
    [0,1,2,3,4,5,6,7,8,9]
    #后10个数
    >>>L[-10:]
    [90,91,92,93,94,95,96,97,98,99]
    #前11-20个数
    >>>[10:20]
    [10,11,12,13,14,15,16,17,18,19]
    #前10个数,每2个取一个:
    >>>L[:10:2]
    [0,2,4,6,8]
    #所有数,每5个取一个:
    >>>L[::5]
    [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]
    #什么都不写,只写[:]就可以原样复制一个list
    >>>L[:]
    [0,1,2,3,...,99]
    

    tuple

    tuple也是一种list,唯一区别是tuple不可变。因此,tuple也可以用切片操作,只是操作的结果仍是tuple:

    >>> (0, 1, 2, 3, 4, 5)[:3]
    (0, 1, 2)
    

    字符串

    字符串'xxx'也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串:

    >>> 'ABCDEFG'[:3]
    'ABC'
    >>> 'ABCDEFG'[::2]
    'ACEG'
    

    在很多编程语言中,针对字符串提供了很多各种截取函数(例如,substring),其实目的就是对字符串切片。Python没有针对字符串的截取函数,只需要切片一个操作就可以完成,非常简单。

    参考

    1. 廖雪峰-切片
    2. Python列表切片详解
  • 相关阅读:
    sqlserver中判断表或临时表是否存在
    Delphi 简单方法搜索定位TreeView项
    hdu 2010 水仙花数
    hdu 1061 Rightmost Digit
    hdu 2041 超级楼梯
    hdu 2012 素数判定
    hdu 1425 sort
    hdu 1071 The area
    hdu 1005 Number Sequence
    hdu 1021 Fibonacci Again
  • 原文地址:https://www.cnblogs.com/miqi1992/p/7783098.html
Copyright © 2011-2022 走看看