python序列学习

       我的学习python练习的环境的是ubuntu 14.04操作系统,默认的是安装python2.7。所以一切的练习都是在python2.7上。下面我把学习序列的一些操作和想法分享给大家。
        python的序列像java中的数组,一般数组都是用于存放元素或对象。我们可以对python序列进行,通过索引查找元素,插入操作,乘法操作,遍历,还有对序列的元素的子集进行操作,又称分片。
       索引:序列中所有元素都是有有编号的,从左往右,从0开始依次递增,这编号就称为索引。
   测试代码:
>>> arr=[1,2,3,4,5,6,7,8,9]
>>> arr
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> arr[0]
1
>>> arr[-1]
9

习惯了java代码,习惯上数组的变量都是用arr开头,我们还是称为序列吧。我们可以看到arr[0]的元素是1,其中0就是索引,1就是序列中的元素。python也支持传负数,负数的的规律从右往左依次是-1,-2……
       分片:分片操作其实就是依索引为基础,操作序列的子集合(一定范围内的元素),类似与java中的截取操作。
测试代码:
>>> arr[0:3]
[1, 2, 3]
>>> arr[7:12]
[8, 9]
>>> arr[5:len(arr)]
[6, 7, 8, 9]
>>> arr[-3:-1]
[7, 8]
>>> arr[-3:0]
[]
>>> arr[-3:-9]
[]

从以上例子可以看出,python的分片操作是以“[开始索引:结束索引]”来获取子集合,其中包含开始索引元素,不包含结束索引元素,第二个例子,索引12在arr中没有存在元素,所以输出到最后一个元素,没有报异常。三个例子其中len是获取序列的长度。一般java中经常用到,防止数组索引过界。由第二个例子可以看出python不用担心,索引可以为负数,表示从右开始-1,-2……,从第四个到第六个例子可以看出。可以用负数进行分片操作。第五个例子和第六个例子说明,如果使用负数,两个都要是负数,且冒号右边大于左边。
分片还有以下操作:
取最后三个元素:
>>> arr[-3:]
[7, 8, 9]

取所有元素:
>>> arr[:]
[1, 2, 3, 4, 5, 6, 7, 8, 9]

分片中的步长:也就是分片中除了开始索引和结束索引,还可以添加一个参数,称为步长,就是隔几个取值,难理解就看例子。
>>> arr[0:9:1]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> arr[0:9:2]
[1, 3, 5, 7, 9]
>>> arr[::3]
[1, 4, 7]
>>> arr[::-1]
[9, 8, 7, 6, 5, 4, 3, 2, 1]
>>> arr[3:5:-1]
[]
>>> arr[5:3:-1]
[6, 5]
>>> arr[:3:-1]
[9, 8, 7, 6, 5]
>>> arr[3::-1]
[4, 3, 2, 1]

从以上例子,可以得出结论:步长正数时,若是索引全部指定,从小到大,第一个值,是索引指定元素获得子集合中第一个元素,然后按照步长取值。步长负数时:开始索引小于结束索引,按照步长取值。只有一个值时,在开始索引位置时,第二值默认就是0,在结束索引位置时,开始索引默认的值是len(arr),正数时相反。

猜你喜欢

转载自studypi.iteye.com/blog/2203704