![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=1738906678-51aD2hYZNQr7tnK55wKP7xSMUzl6z3zx-0-4465dd8df365a5b6553cdc0afa2a5084)
Python创建列表时,解释器在内存中生成一个类似数组的数据结构,数据项自下而上存储,如图3-1所示。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/36_02.jpg?sign=1738906678-gLrJ7V9idH9vG6mKkYKXJCz8hGKG2V2c-0-479f6e93ea622e512ff97b0e8fdf176a)
图3-1 列表存储方式
下面介绍列表操作。
(1)创建列表
使用“=”将一个列表赋值给变量。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/36_03.jpg?sign=1738906678-FTa3c2CmeCmxLqnwScVmAlDnh305cukQ-0-6947256638b3ac0f4c6881230c1600fb)
(2)读取元素
用列表名加元素序号访问列表中某个元素。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_01.jpg?sign=1738906678-lwhoLxfe991MwrlvzgueI8GLjiQ2Y1LI-0-37cb74f34eb410332f6d85527000a53e)
(3)修改元素
只需直接给元素赋值。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_02.jpg?sign=1738906678-PUdGqZ9nK3SgPug3Bg9kYRosa3BnS8cd-0-955d71dfdf0d679ee755fc764e8b3396)
(4)增加元素
方法1:使用“+”将一个新列表附加在原列表的尾部。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_03.jpg?sign=1738906678-Y4JutPcSnzYAEKBARKX1nhlf2bVQInXF-0-0b3b739dd766a45cf8e0c433d167279b)
方法2:使用append()方法向列表尾部添加一个新元素。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_04.jpg?sign=1738906678-Eyy7sLmVHtBVbEoo8CeNQM2mRyhHxSqr-0-ce15828b9470911605e908b0eab0ec9f)
方法3:使用extend()方法将一个列表添加在原列表的尾部。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_05.jpg?sign=1738906678-2ZGlzZ8SFMCQ4Bq7ubCYWpPnFQki2Rqe-0-042405c5f1371223aa9acc972c40d0a3)
方法4:使用insert()方法将一个元素插入到列表的任意位置。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_06.jpg?sign=1738906678-b2sNAr52HFgpBBa4Zv7eL3eGi5n6Ri5l-0-cf4f83287bd28a750dd2b613eed826d7)
(5)检索元素
使用count()方法计算列表中某个元素出现的次数。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_07.jpg?sign=1738906678-KMlHP2MDqa7hpinQhQ1pRUJGI5RscNy0-0-f57dd32d152ad0d68c555ffa9227f557)
使用in运算符返回某个元素是否在该列表中。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_08.jpg?sign=1738906678-8mNY9l8F2eFRoEMS4f1RMioy1YvI3H8L-0-c34c5ba9f586ccd6c5a02d5887d46f6e)
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/38_01.jpg?sign=1738906678-BAur3YQg7DMkQHDTIF0z4YLdxI0Hhv5h-0-2ba3f56e5fefb93aba5309c5454df204)
(6)删除元素
方法1:使用del语句删除某个特定位置的元素。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/38_02.jpg?sign=1738906678-cv7p1kdAoz9hHEJyDYyxak45WjvTmgsy-0-e7e9d56970954c6426a05fe7a8e29e11)
方法2:使用remove方法删除某个特定值的元素。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/38_03.jpg?sign=1738906678-nvvPJHNn5HXOqyU4TaFuf50aREWzKx4J-0-a89909e8209d609db0c016a9a689a68f)
方法3:使用pop(参数)方法弹出指定位置的元素,缺省参数时弹出最后一个元素。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/38_04.jpg?sign=1738906678-IURFjJDm5RRZ9EGKWBRNOcvHzH5athdo-0-48b064ef68df94c3d734f973a5e8a308)
列表方法如表3-1所示。
表3-1 列表方法
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/39_01.jpg?sign=1738906678-0vFiQ4JF7IDQp7viEc8fsqL51D6ZCui3-0-2e21c9d426cb8b38692883d77d1986c6)
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=1738906678-XwmA2mUYFnltOixVBXjqLI6PWih3uokV-0-7d0848f3605f3a4382df54a617634bb1)
当创建只包含一个元素的元组时,需要注意它的特殊性。此时,只把元素放在圆括号里是不行的,这是因为圆括号既可以表示元组,又可以表示数学公式中的小括号,从而产生歧义。因此,Python规定:当创建只包含一个元素的元组时,需在元素的后面加一个逗号“,”。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/39_03.jpg?sign=1738906678-Z5bd2PvU9A3xiD48i0zhn9OSiXpdZhe3-0-f06c1e07fe6f1b7e311a454ee85048ea)
(2)访问元组
元组可以使用下标索引来访问元组中的值。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/40_01.jpg?sign=1738906678-OURhl7XTFSfW7JNGuJqU1zSyIASsnjRs-0-66b4ba36dbad4a52b02408a559413c82)
(3)元组连接
元组可以进行连接操作。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/40_02.jpg?sign=1738906678-nAvx7qiENgB018dI6N0duS7wjm3OYGLq-0-cc75e69da3d915247e24894ef7bae167)
(4)删除元组
元组中的元素值是不允许删除的,但可以使用del语句删除整个元组。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/40_03.jpg?sign=1738906678-NLsUPpF9juNv4EQJMt9vOQ4zIMMa2gU2-0-e159f2a05f606299e74bb1112f5f9754)
3.2.3 字符串
字符串(String)与列表和元组都是序列,其方法如表3-2所示。
表3-2 字符串方法
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/40_04.jpg?sign=1738906678-joT9UqSssSQiycELzzWVcoeSizt82slW-0-3934b2de5fcf2234f6edd75a350fc36a)
下面介绍字符串的操作。
(1)index举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/41_01.jpg?sign=1738906678-eWFI42vpr584YCmfrPFOgKxSTQyjflq6-0-d83c18eba86010d3c9667aeb0d2a57a7)
(2)find举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/41_02.jpg?sign=1738906678-dLVEBHbGWC1ZsgFyoWQDpDaywvGwK84g-0-0123af336bb0e1532840629eab55cbff)
(3)replace举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/41_03.jpg?sign=1738906678-Vhaam9xWZMPfS1DySxPMkK3IMdz4d1YW-0-44c36a839a5e6d0637ced48f742a86bb)
(4)count举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/41_04.jpg?sign=1738906678-Q3cYd43fLw7JTxTKl7WRYEstEkG5NB85-0-d9ce9410cf2154188c8d452fa3ecb2f7)
(5)split举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/41_05.jpg?sign=1738906678-RfExy083aMchU4WlaMpI9flfILC30EMA-0-b7d61b71b0a2f1ddddca31300cc4ec02)
(6)join举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/42_01.jpg?sign=1738906678-Kd8LWGOlIDmf21ThABb49qkIiZswhRzy-0-5c00fcdaaebb373a2d34ef8d0a87efee)
【例3-1】 输入一段字符,统计其中单词的个数,单词之间用空格分隔。
【解析】连续一段不含空格字符的字符串就是单词。将连续的若干个空格看作一个空格,因此,单词的个数可以由空格数来决定。如果当前字符是非空格,而它的前一个字符是空格,便认为是新单词的开始,累计单词个数的变量加1;如果当前字符是非空格字符,而它的前一个字符也是非空格字符,则认为是旧单词的继续,积累单词个数的变量保持不变。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/42_02.jpg?sign=1738906678-1pg7GoKOS1DdlSXk9mds0KKDti2N1dcV-0-7850698fa627aa50c72ff7f89188d4dc)