![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=1739128147-gPZDOVoIcnOSEmrQeF4qPb4Xji7N6Zc5-0-c5513925e03358b8e53f054e0c01dfc8)
2-1 序列的通用操作
1.序列索引
序列中的每个元素被分配一个序号:即元素的位置,也称为索引。第一个索引是0,第二个则是1,以此类推,如图2-1所示。
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/48_03.jpg?sign=1739128147-W7LnKi2iWcLGbPohLZ3ujErHHxJbxPlg-0-e104579d951518d11b74e5b08f8f70cf)
图2-1 序列索引值示意
索引值可以是负数,此类索引是从右向左计数,换句话说,从最后一个元素开始计数,从索引值-1开始,如图2-2所示。需要注意的是,索引下标不是从0开始。
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/48_04.jpg?sign=1739128147-LnR1VikfG4qRdshiuMDGo3tvK7tuSQFr-0-57595d17afd3048eff261fb5030a1f24)
图2-2 负值索引示意
【例2-1】 字符串的正负索引。
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/49_01.jpg?sign=1739128147-AniTB0WC3ENGZEZkB9oTbWRwV5bk67hD-0-18ff75db0a3601e214aad0a7f4b39f89)
运算结果:
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/49_02.jpg?sign=1739128147-QZMIvjHKRSEhYEomoK6RxbAAZQZ3525x-0-784469af7d78290c2772afefbaa860ed)
本例中,中文字符跟英文字符一样,都是占据1个索引。
2.序列切片
切片操作是访问序列中元素的另一种方法,它可以访问一定范围内的元素,通过切片操作,可以生成一个新的序列。
序列实现切片操作的语法格式如下:
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/49_03.jpg?sign=1739128147-gCHMEiOmT4Wc7RLIHpANcEne4kfIc40O-0-886729795c631782e3a7e9565a8ea9ea)
其中,各个参数的含义如下。
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=1739128147-IQJcjWJGCURUZoc7SrWn53VNC4JmKde0-0-40077062333059363941384087367f8e)
运算结果:
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/49_05.jpg?sign=1739128147-HGaM9CHveABioQcidgSKiJn8Gv01FBG7-0-bdd9f2212d5116f180dcca69d97e073e)
3.序列相加
在Python中,支持两种类型相同的序列使用“+”运算符做相加操作,它会将两个序列进行连接,但不会去除重复的元素。这里所说的“类型相同”,指的是“+”运算符的两侧序列要么都是序列类型,要么都是元组类型,要么都是字符串。
【例2-3】 字符串的序列相加。
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/50_01.jpg?sign=1739128147-KHQAFmChrVeRAPM0Az8JNGN4o0j160Cl-0-8bbb71b1bf7003847169ae9b70f772c0)
运算结果:
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/50_02.jpg?sign=1739128147-T3GWyp3Ll17h2EZ4yrbWyP43y1Cfv57q-0-be6581e5d0c8a03ed04775774d4053c4)
4.序列相乘
在Python中,使用数字n乘以一个序列会生成新的序列,其内容为原来序列重复n次的结果。
【例2-4】 字符串的序列相乘。
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/50_03.jpg?sign=1739128147-aWynswhJ4Hngau4wPwlnijjN1gaWNeFm-0-95bf003af4a8b58c400a1732e624bf79)
运算结果:
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/50_04.jpg?sign=1739128147-11VBHgadNnUozQWlhN62NMd5XakEcps2-0-9dca55114a93356715f3e83c7a3c9715)
5.检查元素是否包含或不包含在序列中
在Python中,可以使用in关键字检查某元素是否为序列的成员,其语法格式为:
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/50_05.jpg?sign=1739128147-p2u2THuNZDhrZGCLwi59ty4D6iDzb4ye-0-084caf737419cbd0ac0af3c4ba6f964b)
其中,value表示要检查的元素,sequence表示指定的序列。
和in关键字用法相同,但功能恰好相反的,还有not in关键字,用于检查某个元素是否不包含在指定的序列中
【例2-5】 检查元素是否包含或不包含在序列中。
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/50_06.jpg?sign=1739128147-4SSrbuabwCIX8l0TE6xcunEuF02VIPf4-0-563563c3f279773f86a4105322bd59b0)
运算结果:
![](https://epubservercos.yuewen.com/F38A38/21511156801516706/epubprivate/OEBPS/Images/50_07.jpg?sign=1739128147-HsVdnVcVawn0YTVGcszXh0U8P5e8msxw-0-4fc6376b8104b9f5e6cc05f837d4ffba)