• 周蓬安.blog的博客—强国博客—人民网 2019-05-10
  • 紫光阁中共中央国家机关工作委员会 2019-05-10
  • 感触名家笔下的端午文化吃香粽原来可以这样文艺 2019-05-09
  • 追梦夺冠游行嘲讽詹皇 百万人面前穿订制T恤羞辱他 2019-04-27
  • 《瘟疫传说》:黑死病恐怖 姐弟在绝望中求生 2019-04-10
  • 陕西国防工业职业技术学院百名大学生志愿者敬老院慰问孤寡老人陕西国防工业职业技术学院百名大学生志愿者敬老院慰问-陕西教育新闻 2019-04-08
  • 西藏拉萨:新家园 新生活 2019-04-08
  • 尊重和保障宗教信仰自由的中国实践 2019-04-06
  • 一敬泯恩仇 俄罗斯队主帅这个动作太暖了 2019-03-20
  • 四大名著剧组首次同台忆往事 经典影视剧如何铸就? 2018-12-07
  • “天眼”凝望 探秘宇宙 2018-12-07
  • 1

    2.3Python下分片

    Posted by 撒得一地 on 2015年12月30日 in python教程
    国外稳定加速器推荐    Express | Vypr

    与使用索引来访问单个元素类型,可以使用分片操作来访问一定范围内的元素。分片通过冒号相隔的两个索引来实现:

    >>> url='<a href="//www.cfage.com">技术拉近你我</a>'
    >>> url[9:30]
    '//www.cfage.com'
    >>> url[32:-4]
    '技术拉近你我'
    

    分片操作对于提取序列的一部分是很有用的。而编号在这里显得尤为重要。第一个索引是需要提取部分的第一个元素的编号,而最后的索引是分片之后剩下部分的第一个元素的编号。如:

    >>> numbers=[1,2,3,4,5,6,7,8,9,10]
    >>> numbers[3:6]
    [4, 5, 6]
    >>> numbers[0:1]
    [1]
    

    简而言之,分片操作的实现需要提供两个索引作为边界,第一个索引的元素是包含在分片内的,而第二个则不包含在分片内。

    1.序列简易操作

    假设需要访问最后3个元素(上面numbers的例子),那么可以进行如下操作:

    >>> numbers[7:10]
    [8, 9, 10]
    

    从上面的输出结果可以知道,索引10指向的是第11个元素,这个元素并不存在,索引在最后一个元素之后。不过,这样访问却是合法的。那么,如果需要从序列结尾开始计数该怎么做?

    >>> numbers[-3:-1]
    [8, 9]
    

    根据上面的例子可以知道,看来不能使用索引-1来代表最后一个元素。那么使用索引0作为第二部操作所使用的索引是否可行,看下输出结果:

    >>> numbers[-3:0]
    []
    

    直接输出一个空序列。实际上,只要分片中最左边的索引比它右边的晚出现在序列中,结果就是一个空序列。然而,在Python中可以使用一个简易操作,如果分片所得部分包括序列结尾的元素,那么,只需将最后一个索引置空即可:

    >>> numbers[-3:]
    [8, 9, 10]
    

    这种方法同样适用于开始的元素:

    >>> numbers[:3]
    [1, 2, 3]
    

    实际上,如果需要复制整个序列,可以将两个索引都置空:

    >>> numbers[:]
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    
    

    实例:对//www.example.com形式的url进行分割

    >>> url=input('Please enter a URL:')
    Please enter a URL://www.baidu.com
    >>> domain=url[11:-4]
    >>> print("Domain name:"+domain)
    Domain name:baidu
    

    2.更大的步长

    进行分片的时候,分片的开始和结束点需要进行指定(不管是直接还是间接)。而另外一个参数(Python2.3加入到内建类型)——步长(step length)——通常都是隐式设置的。在普通的分片中,步长是1——分片操作就是按照这个步长逐个遍历序列的元素,然后返回开始和结束点之间的所有元素。

    >>> numbers[0:10:1]
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    

    在上面的例子中,分片除了开始索引和结束索引,还包含了另外一个数字。这个数字的作用就是用来设置步长的。如果步长被设置的比1大,那么就会跳过某些元素。例如步长为2的例子(从开始到结束每隔一个元素):

    >>> numbers[0:10:2]
    [1, 3, 5, 7, 9]
    >>> numbers[3:6:3]
    [4]
    

    要注意,步长不能为0。步长为0那么就不会向下执行。不过步长可以是负数,即从右到左提取元素:

    >>> numbers[8:3:-1]
    [9, 8, 7, 6, 5]
    >>> numbers[10:0:-2]
    [10, 8, 6, 4, 2]
    >>> numbers[0:10:-2]
    []
    >>> numbers[::-2]
    [10, 8, 6, 4, 2]
    >>> numbers[5::-2]
    [6, 4, 2]
    

    分片时,开始点的元素(最左边元素)包括在结果之中,而结束点的元素(最右边的元素)则不在分片之内。当使用一个负数作为步长时,必须让开始点(开始索引)大于结束点。对于一个正数步长,Python会从序列的头部开始向右提取元素,直到最后一个元素;而对于负数步长,则是从序列的尾部开始向左提取元素,直到第一个元素。

    标签:

    上一篇:

    下一篇:

    相关推荐

    1 Comment

    发表评论

    电子邮件地址不会被公开。 必填项已用*标注

    8 + 8 = ?

    网站地图|广东快乐10分开奖直播

    Copyright © 2015-2019 广东快乐10分开奖直播 All rights reserved.
    闽ICP备15015576号-1,版权所有?psz.

  • 周蓬安.blog的博客—强国博客—人民网 2019-05-10
  • 紫光阁中共中央国家机关工作委员会 2019-05-10
  • 感触名家笔下的端午文化吃香粽原来可以这样文艺 2019-05-09
  • 追梦夺冠游行嘲讽詹皇 百万人面前穿订制T恤羞辱他 2019-04-27
  • 《瘟疫传说》:黑死病恐怖 姐弟在绝望中求生 2019-04-10
  • 陕西国防工业职业技术学院百名大学生志愿者敬老院慰问孤寡老人陕西国防工业职业技术学院百名大学生志愿者敬老院慰问-陕西教育新闻 2019-04-08
  • 西藏拉萨:新家园 新生活 2019-04-08
  • 尊重和保障宗教信仰自由的中国实践 2019-04-06
  • 一敬泯恩仇 俄罗斯队主帅这个动作太暖了 2019-03-20
  • 四大名著剧组首次同台忆往事 经典影视剧如何铸就? 2018-12-07
  • “天眼”凝望 探秘宇宙 2018-12-07
  • 中原风采22选5走势图 上海时时乐出号走势图 北京单场开奖时间 31选7中奖规则 双色球基本走势图50期 北京赛车pk10中奖规则 体彩重庆百变王牌走势图 中国竟彩联盟 新疆时时彩三星万能七码走势图 潮州市福彩中心在哪里 体彩p3开机号试机号 天天彩票注册地址 福彩15选5走势图 北京pk10是国家开的吗 四川福彩开奖 6场半全场对几场才有奖