![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=1739533542-DGEARbocVHM7hytzi66rm4RQcnZ5ajDO-0-2e6f42e4e200c26241e8608dd4ab47a6)
Python创建列表时,解释器在内存中生成一个类似数组的数据结构,数据项自下而上存储,如图3-1所示。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/36_02.jpg?sign=1739533542-6w0KTOhngKY2gLzpZsdmUoWW9jR37k0w-0-94d717da75a6cd2cd328951be07691a6)
图3-1 列表存储方式
下面介绍列表操作。
(1)创建列表
使用“=”将一个列表赋值给变量。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/36_03.jpg?sign=1739533542-zK2sA2WWB03NTSy2NmvWgNyRIxgWqZdV-0-4fac9e2b9029fca7be788d1df5fcb20d)
(2)读取元素
用列表名加元素序号访问列表中某个元素。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_01.jpg?sign=1739533542-j57GyHPvpoUeM6VkYdVloIE6ABd0zjEP-0-0740f4316f8c3359cf33eaff79dd8b01)
(3)修改元素
只需直接给元素赋值。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_02.jpg?sign=1739533542-Ccfp3mcsdWqwPxrsznoInIbee1INXQi3-0-108cf0f4d5a4d8f0751f1f87bd47ae77)
(4)增加元素
方法1:使用“+”将一个新列表附加在原列表的尾部。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_03.jpg?sign=1739533542-rVqD6yIcgjXXWrV3ixOcrDhfwc6lmyBS-0-8f750049c488a9d1daa1151ceccb9dff)
方法2:使用append()方法向列表尾部添加一个新元素。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_04.jpg?sign=1739533542-C11XE8pa7dJrLXFcYWcjpL5oAvoNthuz-0-b16b181294cf9b1e2487d5fa57f96a5b)
方法3:使用extend()方法将一个列表添加在原列表的尾部。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_05.jpg?sign=1739533542-sdMNGqusgQ8ykYR2kks0QFFM9n1sNhBK-0-3db08a09717b2a64d55caa10584c370e)
方法4:使用insert()方法将一个元素插入到列表的任意位置。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_06.jpg?sign=1739533542-T8bNkXErNTaVvtaRA7uiFgRLqwVRdjyn-0-24edf4f8393c9265ded019bea52afb62)
(5)检索元素
使用count()方法计算列表中某个元素出现的次数。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_07.jpg?sign=1739533542-aJ079tSYgYB4dAfRkCgdjfhrQknLBanm-0-f042289f5e813a842ea633f745efb2b6)
使用in运算符返回某个元素是否在该列表中。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_08.jpg?sign=1739533542-nfn0gJPZWjC1DGxY7Qri4Gc0TW6xJg1I-0-7b5b4d26640c36e3fcee46fbcbcb52d0)
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/38_01.jpg?sign=1739533542-3ns7pEi9pod8NIGiyZmekKTmCShixoyG-0-6b3d9c6983f6c492e6a8f84c362385b1)
(6)删除元素
方法1:使用del语句删除某个特定位置的元素。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/38_02.jpg?sign=1739533542-UTGrSaNx59BQvw67r490trPM4x7lgGuZ-0-2215ebf494a8ffe6eb21a66558383a5c)
方法2:使用remove方法删除某个特定值的元素。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/38_03.jpg?sign=1739533542-VHadzYbzLJVX27sRx2v7sAAznnddkCzD-0-9c952723b0ff08894139bf526557890b)
方法3:使用pop(参数)方法弹出指定位置的元素,缺省参数时弹出最后一个元素。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/38_04.jpg?sign=1739533542-o6Oz7Q409RFNl22kR1NqcKe8g99QM2Dw-0-59a8ef634cf88b621692a36ae6d5d27d)
列表方法如表3-1所示。
表3-1 列表方法
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/39_01.jpg?sign=1739533542-pY65VoIE9CSgA6NoRl0dEB1eLflRAs7L-0-8c0d9afe824cffc2dfc849cb5136c884)
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=1739533542-UEKmz50QcdOzXdiq7e9cOxK7FGrhUDTb-0-73c9ad96548eb02071fd6e85bb1ff47b)
当创建只包含一个元素的元组时,需要注意它的特殊性。此时,只把元素放在圆括号里是不行的,这是因为圆括号既可以表示元组,又可以表示数学公式中的小括号,从而产生歧义。因此,Python规定:当创建只包含一个元素的元组时,需在元素的后面加一个逗号“,”。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/39_03.jpg?sign=1739533542-FQJgpVeJOaY8r4TLE4rChXsnn31mTirK-0-68c362ffd380c6e3187d0662114048c6)
(2)访问元组
元组可以使用下标索引来访问元组中的值。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/40_01.jpg?sign=1739533542-HoHQLBmtPv35mpGMPRPhxddrIpMbu2Tk-0-a141cdd1ac09b4069aa544a5a3d3b9a7)
(3)元组连接
元组可以进行连接操作。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/40_02.jpg?sign=1739533542-6t9TbGCrsJAMIVSTsHjEIlm6AcCLSfoo-0-d81054c8e499641c10be24de6f24aa7b)
(4)删除元组
元组中的元素值是不允许删除的,但可以使用del语句删除整个元组。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/40_03.jpg?sign=1739533542-rnY7ImoOJPhYYlO4epA4hxAbEg9aaZLS-0-09ece905a2e28e1d46320f759cabc0e7)
3.2.3 字符串
字符串(String)与列表和元组都是序列,其方法如表3-2所示。
表3-2 字符串方法
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/40_04.jpg?sign=1739533542-leySYtqiXt0WvfiiFMIOes2XFJToFFmG-0-3f0235f4a5a02a59346ebc280fc3c129)
下面介绍字符串的操作。
(1)index举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/41_01.jpg?sign=1739533542-iExcpCFuA6kZou3fh9ePXZ20xgKnQNlM-0-df829f5cd98b06d81d5a2c1c86f59f97)
(2)find举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/41_02.jpg?sign=1739533542-VMBTksNiHUIVz1WaM5vIstEKGm26ur0c-0-c88b4a31498385644ee5a396eed72fd1)
(3)replace举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/41_03.jpg?sign=1739533542-F81DH57rZxfiC2Cf35OqJCl2L20CWGBB-0-53c0a05d57d372109c9f565c7c78e9a9)
(4)count举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/41_04.jpg?sign=1739533542-MilUyynF2TV7SyZpPzxlsxfHHBt0cbTq-0-66cb18fd9d2967aecd95a5df7dd2e034)
(5)split举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/41_05.jpg?sign=1739533542-6Gug50G3AZxwHUZTOTZDvK5DNLaQ3HXq-0-526363dcd134d2af35cb09c8d303a0c1)
(6)join举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/42_01.jpg?sign=1739533542-An598sFCJgrmYUj1rYdRDTR6Pj9vjfbh-0-bae15690d0b2120ca37ca802e12d53d4)
【例3-1】 输入一段字符,统计其中单词的个数,单词之间用空格分隔。
【解析】连续一段不含空格字符的字符串就是单词。将连续的若干个空格看作一个空格,因此,单词的个数可以由空格数来决定。如果当前字符是非空格,而它的前一个字符是空格,便认为是新单词的开始,累计单词个数的变量加1;如果当前字符是非空格字符,而它的前一个字符也是非空格字符,则认为是旧单词的继续,积累单词个数的变量保持不变。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/42_02.jpg?sign=1739533542-BBHH24J02mAW7KR3TZznyu4f0N5rSAzp-0-562df544b2fee39267f710c5647f8404)