[ konakona学习笔记 ]Python 分片讲解

konakona 发布于 2011/10/05 02:51
阅读 3K+
收藏 0
玩了3天MHP3~打到村长4星了~恭喜下自己~其实也有在刷温泉任务和集会所之类~

好了,进入正题吧~


分片就是[开始索引值:结束索引值]这样的写法就是分片了。 这种写法可以用在基础数据类型和函数上。
例如以下写法:


上面这个例子有一个值得一提的地方:如果用户实际输入只有3位,而输入的希望返回分片的索引是4:10呢?会报错吗?不会,所以这里可以大胆的放任何你想要的截取索引值。

而分片中,实际截取的区域是指从开始索引(不包括开始索引的值)到结束索引(包括结束索引的值)这段距离内的内容。所以最后一段代码,如图结果就是“大白痴”,而不是“痴大白痴”或“大白”了。
什么是设置索引值?

设置索引值其实就是通过在一个函数或变量后加上[索引值]来获取其内容。

这样子
print('hello'[1])
#显示第1位索引的值:e


然后说说另一种写法。
print('hello'[-1])
#输出o


[-1] 实际上返回的是倒序的第0个索引。既然如此,为什么不写[-0]呢?很遗憾,这样写的话返回的是[0]一样的结果:5 ,所以大家一定要记住这个小细节。

这是一个倒序的截取字符串的操作,当变成“-索引”这样的形式时,python就是从字符串最后开始分割内容了。

用分片写呢?这次我们用数组来写,会明确得多。我将PYTHON SHELL中的部分直接复制出来。(没用过的朋友不要紧,“>>>”是指输入区域,就象windows的cmd在可输入区域前的目录一样。所以没有“>>>”的部分实际就是程序执行并返回的内容。)
>>> testArray = [5,6,7,8,9,10]
>>> testArray[-5:-2]
[6, 7, 8]
>>> testArray[-5:]
[6, 7, 8, 9, 10]



testArray[-5:-2] 返回的是返回反序第5个索引(即实际内容6)到反序第2个索引(即8)之间的值。

testArray[-5:] 则是返回从反序第5个索引(即实际内容6)到数组结束的所有内容。

当然如果你输入testArray[:3]也可以,输入testArray[:]也可以,都有不同的功效,大家不妨自己动手试试!
更多的便捷功能——步长

步长——在python2.3以上版本新加入的元素。

步长呢,其实就是在分片的格式上,多出一个参数。 [开始索引值:结束索引值:步长]

大家可以将步长理解为跳出值,这样比较贯彻也好理解。

下面先来一个简单的例题:
>>> testArray[0:5:1]
[5, 6, 7, 8, 9]

>>> testArray[0:5]
[5, 6, 7, 8, 9]


可以看出这2个其实没有区别,那步长到底有什么用呢?试着把第三个参数换一换。
>>> testArray[0:5:2]
[5, 7, 9]


看到区别了吧,其实跳出值就相当于“每次输出一个索引都跳过几个元素后继续输出”这样的一个概念。
*步长的初始值必须以1开始,如果是0会报错。 当步长为1时,就象0乘以1一样,什么效果都没有。步长为2时才开始真正运作,跳过一个索引。步长为3就是跳过两个索引,以此类推。

还可以这样写:
>>> testArray[0::3]
[5, 8]


这个只是告诉大家可以灵活的去写,没什么特别含义。

当然步长也能是负数形式。
>>> testArray[::-2]
[10, 8, 6]


这样就是从右到左提取元素。那么大家一定明白了,如果是步长是正数,就是从左到右提取元素。

其实分片操作非常简单,也很容易理解。只是教材书上写得太过深入或者有点偏离正道,讲得物事人非听不太懂了~~~

我刚开始看到python的这种截取序列的方式非常震精。。。因为相比java、php而言,非常滴随性啊!有点接受不鸟……

所以才想写这个记下来,好让自己巩固记忆,也方便大家学习PYTHON。

 

信息来源:http://www.crazyphper.com/?p=1907

加载中
0
ddatsh
ddatsh
python的切片确实是亮点之一
0
崔钢
崔钢
这是python的列表解析。
0
konakona
konakona

虽然python很容易,但最近还是乖乖的回去学java了~就是希望有朝一日能写一个好的android定位后门程序,监视我家那口子的一举一动……

0
wankaiming
wankaiming

引用来自“konakona”的答案

虽然python很容易,但最近还是乖乖的回去学java了~就是希望有朝一日能写一个好的android定位后门程序,监视我家那口子的一举一动……

哇塞,做你男朋友的人真杯具呀。。。

0
konakona
konakona

引用来自“网网”的答案

引用来自“konakona”的答案

虽然python很容易,但最近还是乖乖的回去学java了~就是希望有朝一日能写一个好的android定位后门程序,监视我家那口子的一举一动……

哇塞,做你男朋友的人真杯具呀。。。

是女朋友……I'm Les.

Ok,stop.

konakona
konakona
@memeyang : 饿。。。啊?
sniperBlank
sniperBlank
是不是女文艺程序员都是半土半洋的?
返回顶部
顶部