![Python 3程序设计基础](https://wfqqreader-1252317822.image.myqcloud.com/cover/971/33892971/b_33892971.jpg)
3.2 序列分类
本节详细介绍列表、元组和字符串三种序列。
3.2.1 列表
列表(List)是Python中使用最频繁的数据类型。列表中的每一个数据称为元素,元素用逗号分隔并放在一对中括号“[”和“]”中,列表可以认为是下标从零开始的数组。列表可以包含混合类型的数据,即在一个列表中的数据类型可以各不相同。
列表举例:
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/36_01.jpg?sign=1739172646-m2hDluzafPSMMpDP572DOtMffMYHUvBj-0-289a33f538029f734817384568e369da)
Python创建列表时,解释器在内存中生成一个类似数组的数据结构,数据项自下而上存储,如图3-1所示。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/36_02.jpg?sign=1739172646-KjGpeKX4bQRj3aO5DzHVLubW2sgpDrg1-0-6353690a56f39a645125c4e85ce3d452)
图3-1 列表存储方式
下面介绍列表操作。
(1)创建列表
使用“=”将一个列表赋值给变量。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/36_03.jpg?sign=1739172646-28cOaBQKJhPWogAWrf739TIczjUtQoi2-0-961284d3f1d87cdcdd448b48003569fc)
(2)读取元素
用列表名加元素序号访问列表中某个元素。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_01.jpg?sign=1739172646-uPoxrKfnQ4P58CHax5xoBufS8Mgzp8Zm-0-162c9cb0b47efe322cce4642182faf92)
(3)修改元素
只需直接给元素赋值。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_02.jpg?sign=1739172646-7m0CDH3pybuCGy5wdqEMUHulR8o0tiuU-0-722a45ff14e1c9559f5ac4ea7c157211)
(4)增加元素
方法1:使用“+”将一个新列表附加在原列表的尾部。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_03.jpg?sign=1739172646-ZwSYFntF7zyjX3InawaJa5vHt6gQRx1w-0-a4a130f075b434169c59c370e5056583)
方法2:使用append()方法向列表尾部添加一个新元素。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_04.jpg?sign=1739172646-G6L2tU21SqZJhnb52y1G7IGjwZIG8Sj2-0-25041834c7642e5732ad6ffbc7d696e5)
方法3:使用extend()方法将一个列表添加在原列表的尾部。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_05.jpg?sign=1739172646-z036A4tt5o8kV1GQEfm1aHZ02uJhImqq-0-0cd3a3356fd73129d029c5593c90437b)
方法4:使用insert()方法将一个元素插入到列表的任意位置。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_06.jpg?sign=1739172646-mE5Lpd8kfkFJLrS6s4xgmXV2afSoCx9g-0-7f0f50f549234e440e722f56f2699e0c)
(5)检索元素
使用count()方法计算列表中某个元素出现的次数。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_07.jpg?sign=1739172646-4FLTlPzF7yo6eQDMfBj2rAyFFhGb471w-0-61d9227572b4608673dcc04b3583be7c)
使用in运算符返回某个元素是否在该列表中。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_08.jpg?sign=1739172646-TboLLKAkrVSaecoZIo6MzXGruJCZuieS-0-904daba4f167a6b9e79f35484c12c00d)
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/38_01.jpg?sign=1739172646-2eNilEECK6pHynz16BzhuuAh814zWdUo-0-a32c4667f91f9998682c99f0b6f01d0c)
(6)删除元素
方法1:使用del语句删除某个特定位置的元素。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/38_02.jpg?sign=1739172646-wuy4YNckXVMnFEQSIYmOEqT8zNEOpTBx-0-5ad277f6144122ea6e6d3a57981671ff)
方法2:使用remove方法删除某个特定值的元素。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/38_03.jpg?sign=1739172646-OoaIl8BCzhr3Nmz6sQYZgW93uHEajBXJ-0-15a20b67a1ec54e79508c637aa0965a4)
方法3:使用pop(参数)方法弹出指定位置的元素,缺省参数时弹出最后一个元素。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/38_04.jpg?sign=1739172646-LgFRm6nk4zsyWg9acCQSwDOBN4Wt3Ele-0-97b715cabda950fcc0ab5e31be2f7dc1)
列表方法如表3-1所示。
表3-1 列表方法
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/39_01.jpg?sign=1739172646-AHyckiyTakYEwKXS3iIf1ZrFPEuzpjhH-0-7f073822fc2d15dc32ce03049fbfce6a)
3.2.2 元组
元组(Tuple)和列表类似,相当于只读列表,其元素不可以修改。元组适合于遍历操作,对于数据进行“写保护”,其操作速度比列表快。
元组与列表相比,有如下不同点:
1)元组在定义时所有元素是放在一对圆括号“(”和“)”中,而不是方括号。
2)不能向元组增加元素,元组没有append()、insert()或extend()方法。
3)不能从元组删除元素,元组没有remove()或pop()方法。
4)元组没有index方法。但是,可以使用in方法。
5)元组可以在字典中被用作“键”,但是列表不行。
下面介绍元组操作。
(1)创建元组
使用赋值运算符“=”将一个元组赋值给变量,即可创建元组对象。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/39_02.jpg?sign=1739172646-WiuL9iFgYALgLsRRE1jGd1hEIdLTX6wd-0-4b5860b1ec331e2d1acbd396b66a99ff)
当创建只包含一个元素的元组时,需要注意它的特殊性。此时,只把元素放在圆括号里是不行的,这是因为圆括号既可以表示元组,又可以表示数学公式中的小括号,从而产生歧义。因此,Python规定:当创建只包含一个元素的元组时,需在元素的后面加一个逗号“,”。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/39_03.jpg?sign=1739172646-Dv4EcaI6IQCcktYBqqYVhFiYR8PLbRZT-0-5e6012d95ea9638352531707c6c4c19b)
(2)访问元组
元组可以使用下标索引来访问元组中的值。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/40_01.jpg?sign=1739172646-IjGSe4yaVyO4En5aKvSKjTJfCyj4L8OK-0-6dd6f74e3019d440060db1a75420a456)
(3)元组连接
元组可以进行连接操作。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/40_02.jpg?sign=1739172646-IviSbPrB0UHunGYHIysNznOc8Hvo146P-0-9a49b35818529bf4939c7193a33db138)
(4)删除元组
元组中的元素值是不允许删除的,但可以使用del语句删除整个元组。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/40_03.jpg?sign=1739172646-Begc1vRtNuQTgWlbj3UPSAatBcbi8jrQ-0-dfe2ebe00806267a67fd44387a2b1e55)
3.2.3 字符串
字符串(String)与列表和元组都是序列,其方法如表3-2所示。
表3-2 字符串方法
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/40_04.jpg?sign=1739172646-M2fwK36YOfFil5tsPZo73JXalK4Et4Yt-0-e4d99532607bd8298c67a9deab2c9d73)
下面介绍字符串的操作。
(1)index举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/41_01.jpg?sign=1739172646-T7aTQIfqwF9DLhcreOUAWkVKLeem8Taw-0-d234fce174da64050a2ce941325ddd5a)
(2)find举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/41_02.jpg?sign=1739172646-AwiUQEsj5h6A4Q9QRYGbCoqPQQxChHgw-0-674da6c32352979a3927333f68cdcbce)
(3)replace举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/41_03.jpg?sign=1739172646-iDLLRdo9turhnbmyvilQRZQjfZ54AAEb-0-a8f9825eefab132e3a6e42ad9084308c)
(4)count举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/41_04.jpg?sign=1739172646-R0FDrxZkasxPsSqpb6DOlg3xBtJFfvAe-0-5a7f3630f3ec448b5d1469e3575bf7b4)
(5)split举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/41_05.jpg?sign=1739172646-OMMJCIwNS6cyToDqLky0cm4nqZnhB35L-0-dee010102f29a644bdce2c087415e377)
(6)join举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/42_01.jpg?sign=1739172646-rzghzfQEqjzRaxcm5n7baVXCfBhYvbBh-0-af53b8cd712c06bbadba1212f8bd4cda)
【例3-1】 输入一段字符,统计其中单词的个数,单词之间用空格分隔。
【解析】连续一段不含空格字符的字符串就是单词。将连续的若干个空格看作一个空格,因此,单词的个数可以由空格数来决定。如果当前字符是非空格,而它的前一个字符是空格,便认为是新单词的开始,累计单词个数的变量加1;如果当前字符是非空格字符,而它的前一个字符也是非空格字符,则认为是旧单词的继续,积累单词个数的变量保持不变。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/42_02.jpg?sign=1739172646-XX6ATa03NLqnbmbGj865c56LfgZssXCN-0-71603d9d1781f7aa079d2bb664888354)