序列类型函数2—切片索引的扩展
来源:互联网 发布:新倩女幽魂在mac上玩 编辑:程序博客网 时间:2024/06/05 02:44
位于最后的一个字符砍掉,下面是实现这个要求的一种方法:
>>> 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 的列表,然后用extend()函数把range()的输出添加到这个列表,或者先建立range()输出组成的列表然后再把None 插入到这个列表的最前面,然后对这个列表进行遍历,但是可变对象的内建函数extend()根本就没有返回值,所以这个方法是行不通的:
>>> for i in [None].extend(range(-1, -len(s), -1)):
... print s[:i]
...
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: iteration over non-sequence
这个错误发生的原因是[None].extend(...)函数返回None , None 既不是序列类型也不是可迭代对象. 这种情况下使用上面提到的的列表连接操作来实现是唯一不需要添加额外代码的方法.
当然不用上述方法如此麻烦,正的索引可以到len(s)可以采用以下方法:
>>> s='abcde'
>>> for j in range(len(s),0,-1):
... print s[:j]
...
abcde
abcd
abc
ab
a
- 序列类型函数2—切片索引的扩展
- python -- 序列索引与切片的一些问题
- Python的序列切片
- 索引切片 2
- list(0列表的函数『索引 切片 追加 删除 长度 切片 循环』
- 简明python教程学习笔记之九-序列的通用操作(索引和切片)
- python序列的切片操作
- str() 字符串的常用函数『移除空白 分割 长度 索引 切片』
- tuple()元组的函数『索引 切片 循环 长度 包含』
- Python 切片(slice)的扩展使用方法
- ndarray数组的索引与切片
- NumPy数组基本的索引和切片
- numpy数组切片索引的详细讲解
- JavaScript string 字符串类型的扩展函数
- 切片类型
- Python序列的切片操作符使用
- Python序列的切片操作与技巧
- Python 序列的切片操作与技巧
- php常用的正则匹配
- sql语句_使用帮助(让你写出更好的sql语句)
- 泛型的使用
- ThreadLocal
- Introduction to Darwin Streaming Server (1) - source code organization
- 序列类型函数2—切片索引的扩展
- OpenCV2.4.3 CheatSheet学习
- MQ研究之一(基本操作)
- 从一个链表中等可能取出若干节点
- 【python】python模块(这才是重中之重)
- BATCHNO
- ios 性能优化
- Apache2.2安装完,报No installed sevice named 'Apache2.2'
- Specifying Device Types