![Python编程基础与应用](https://wfqqreader-1252317822.image.myqcloud.com/cover/854/41309854/b_41309854.jpg)
2.1.2 序列的通用操作
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/48_02.jpg?sign=1738917280-uOHjE1ebKZmxABDu4kgsCYmacSdtIyBf-0-6ded77619cfbc3a01d6e889f9bcb8e7c)
2-1 序列的通用操作
1.序列索引
序列中的每个元素被分配一个序号:即元素的位置,也称为索引。第一个索引是0,第二个则是1,以此类推,如图2-1所示。
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/48_03.jpg?sign=1738917280-Q6HCzQo3MK7zD83vHFUI8hoUDTVxqC35-0-5f386bbd3e96a27e6412f867f6168d27)
图2-1 序列索引值示意
索引值可以是负数,此类索引是从右向左计数,换句话说,从最后一个元素开始计数,从索引值-1开始,如图2-2所示。需要注意的是,索引下标不是从0开始。
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/48_04.jpg?sign=1738917280-hbPfBkKTgyihuMkYqijT5BebgZQoSeKy-0-ff55ba3dbaa70a8ef888d23c281ec426)
图2-2 负值索引示意
【例2-1】 字符串的正负索引。
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/49_01.jpg?sign=1738917280-yVK18qe1rW2V5O3h3B3cHs0RGPVGRpDf-0-1be31e2ec897698236f757ccd8813029)
运算结果:
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/49_02.jpg?sign=1738917280-0iuPDcHGfvrZBcGrBGEMxaMOcjJ8loDH-0-23c84724186295666c115c3a8453ba3e)
本例中,中文字符跟英文字符一样,都是占据1个索引。
2.序列切片
切片操作是访问序列中元素的另一种方法,它可以访问一定范围内的元素,通过切片操作,可以生成一个新的序列。
序列实现切片操作的语法格式如下:
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/49_03.jpg?sign=1738917280-UbIqirwJkVbX7ZIzumWtgtKhD6uv6FZG-0-7905b28763360ba1c89e71676a175777)
其中,各个参数的含义如下。
1)sname:表示序列的名称。
2)start:表示切片的开始索引位置(包括该位置),此参数也可以不指定,会默认为0,也就是从序列的开头进行切片。
3)end:表示切片的结束索引位置(不包括该位置),如果不指定,则默认为序列的长度。
4)step:表示在切片过程中,隔几个存储位置(包含当前位置)取一次元素,也就是说,如果step的值大于1,则在进行切片取序列元素时,会“跳跃式”地取元素。如果省略设置step的值,则最后一个冒号就可以省略。
【例2-2】 字符串的序列切片及显示。
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/49_04.jpg?sign=1738917280-mF8h9KjYjunFtbb2k4b5n6V5ky1Qm3G3-0-f86a36cacbd5d719a202a5efd81a22fd)
运算结果:
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/49_05.jpg?sign=1738917280-wagJIhkbNciuqleXkXRTzGu6LivvLWhW-0-7e6eeda1048f93175f336668de086d2d)
3.序列相加
在Python中,支持两种类型相同的序列使用“+”运算符做相加操作,它会将两个序列进行连接,但不会去除重复的元素。这里所说的“类型相同”,指的是“+”运算符的两侧序列要么都是序列类型,要么都是元组类型,要么都是字符串。
【例2-3】 字符串的序列相加。
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/50_01.jpg?sign=1738917280-DLgwkSAOYJTbiwKaTuUX870ZrI41bj4y-0-f768dd2112a0d24f50c11af24c02c3c8)
运算结果:
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/50_02.jpg?sign=1738917280-fD9xjN3HdsH43xvjoUnmRFEknLiQnpMk-0-c572d8bec114c1a6a90a0e65f54c5044)
4.序列相乘
在Python中,使用数字n乘以一个序列会生成新的序列,其内容为原来序列重复n次的结果。
【例2-4】 字符串的序列相乘。
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/50_03.jpg?sign=1738917280-uHNbI8nPgM9mXP8kMR83BJiasdnB9Bi5-0-cfff6b5c9e6bb529ae6ae618ac366b30)
运算结果:
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/50_04.jpg?sign=1738917280-j4iaRguKrTIgEMSTUhd6wi1SOUQwyadz-0-6850a32c70ca41151c47d4fca24db03e)
5.检查元素是否包含或不包含在序列中
在Python中,可以使用in关键字检查某元素是否为序列的成员,其语法格式为:
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/50_05.jpg?sign=1738917280-ty3FLxuo6YbYB8lN3vxMFNr1wYK3KmmE-0-2457e3d0fca5705d766b1a4a87ad6ef5)
其中,value表示要检查的元素,sequence表示指定的序列。
和in关键字用法相同,但功能恰好相反的,还有not in关键字,用于检查某个元素是否不包含在指定的序列中
【例2-5】 检查元素是否包含或不包含在序列中。
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/50_06.jpg?sign=1738917280-j5SXZiIm5lZ6HgEGwjaYvm1mbRRe8csh-0-85225410f23f60ee922e216b9a2ef249)
运算结果:
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/50_07.jpg?sign=1738917280-u3lXprKi2f7Pu572oIww9XmQZCMgAO0G-0-c9f22a451c95abb0c3a938653e9aed64)