python切片(转载)

原文链接:http://blog.sina.com.cn/s/blog_6d802e7b0100oy01.html
1.切片:
    通过指定下标的方式来获得某一个数据元素,或者通过指定下标范围来获得一组序列的元素,这种访问序列的方式叫做切片。
    访问某一个数据元素的的语法如下:
    sequence[index]
    sequence是序列名,index是想要访问的元素对应的偏移量,偏移量可以是正值,范围是:0<=index<=len(sequence)-1;也可以是负值,范围是:-len(sequence)<=index<=-1
    序列访问多个元素,只需给出开始和结束的索引值,并且用冒号分隔就可以了,其语法如下:
    sequence[starting_index:ending_index]
   通过这种方式我们可以得到从起始索引到结束索引(不包括结束索引对应的元素)之间的
一"片"元素.起始索引和结束索引都是可选的,如果没有提供或者用None 作为索引值,切片操作
会从序列的最开始处开始,或者直到序列的最末尾结束。
    例如:
     >>> s='abcdfg'
>>> s
'abcdfg'
>>> s[1]
'b'
>>> s[3]
'd'
>>> s[1:3]
'bc'
>>> s[3:5]
'df'
>>> s[4:7]
'fg'
>>> s[:]
'abcdfg'
>>> s[]
  File "<stdin>", line 1
    s[]
      ^
SyntaxError: invalid syntax
>>> s[:7]
'abcdfg'
>>> s[0]
'a'
>>> s[0:7]
'abcdfg'
>>> s[4:]
'fg'
>>> s[-100:100]
'abcdfg'


2. 切片与range()函数联合使用
    有这么一个问题:有一个字符串,我们想通过一个循环按照这样的形式显示它:每次都把
位于最后的一个字符砍掉,下面是实现这个要求的一种方法:
>>> s = 'abcde'
>>> i = -1
>>> for i in range(-1, -len(s), -1):
... print s[:i]
... abcd
abc
ab
a
    可是,该如何在第一次迭代的时候显示整个字符串呢?是否有一种方法可以不用在整个循
环之前加入一个额外的print 语句呢?我们该如何定义一个索引,来代表整个的序列呢?事实
上在个以负数作为索引的例子里是没有一个真正能解决这个问题的方法的,因为-1 已经是“最
小”的索引了.我们不可能用0 来作为索引值,因为这会切片到第一个元素之前而什么都不会显
示:
>>> s[:0]
''
    我们的方案是使用另一个小技巧:用None 作为索引值,这样一来就可以满足你的需要,比
如说,在你想用一个变量作为索引来从第一个到遍历最后一个元素的时候:
>>> s = 'abcde'
>>> for i in [None] + range(-1, -len(s), -1):
... print s[:i]
...
abcde
abcd
abc
ab
a
   不使用用None 作为索引值时,另一种实现满足需要的方法:
>>> s='abcde'
>>> for i in range(len(s),0,-1):
...    print s[:i]
...
abcde
abcd
abc
ab
a


3.

切片操作符在python中的原型是
[start:stop:step]

即:[开始索引:结束索引:步长值]

开始索引:同其它语言一样,从0开始。序列从左向右方向中,第一个值的索引为0,最后一个为-1

结束索引:切片操作符将取到该索引为止,不包含该索引的值

步长值:默认是一个接着一个切取,如果为2,则表示进行隔一取一操作。步长值为正时表示从左向右取,如果为负,则表示从右向左取。步长值不能为0


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值