![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=1738884966-Op0dbNjoKwZK4yQi70SxPFhBCJSjbmsV-0-2374d9188c84cc8f72e42d1787842176)
Python创建列表时,解释器在内存中生成一个类似数组的数据结构,数据项自下而上存储,如图3-1所示。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/36_02.jpg?sign=1738884966-weq3ZgXzJWh5cNXzc5uhsAQbTCGVHCVC-0-427c4d7e51595084ff0684b5070b2e4f)
图3-1 列表存储方式
下面介绍列表操作。
(1)创建列表
使用“=”将一个列表赋值给变量。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/36_03.jpg?sign=1738884966-CIfIEoufkyOYpbwaWdqlYUFbz3kjXSPG-0-b2ca40049375ee3238b6178b1c184f06)
(2)读取元素
用列表名加元素序号访问列表中某个元素。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_01.jpg?sign=1738884966-jp1n0nuseMMQ7jIypj0VvylPqbFvM2E7-0-8fd66cf1b216d3d3488d393b43371ba7)
(3)修改元素
只需直接给元素赋值。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_02.jpg?sign=1738884966-UHmw48oWDsJvXa8Q8A19Lg8gK3dUmJn8-0-b82367e0c41fca82f2b9b726e4298277)
(4)增加元素
方法1:使用“+”将一个新列表附加在原列表的尾部。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_03.jpg?sign=1738884966-kPHkwMCPqCvRPISwbCSLb26SIzYae0Uf-0-28f46ac9339d118971536edf0bf17f6f)
方法2:使用append()方法向列表尾部添加一个新元素。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_04.jpg?sign=1738884966-U7eypoWjBNZuA54jPrhXTdizf60oAX4j-0-15174f080b6a9c4b3f276a634e9d4670)
方法3:使用extend()方法将一个列表添加在原列表的尾部。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_05.jpg?sign=1738884966-Zzo9WT6OmgHESBo4DEToCUpk92DcCo5A-0-312d2e38895a915b6a1d3c34d4f19c15)
方法4:使用insert()方法将一个元素插入到列表的任意位置。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_06.jpg?sign=1738884966-G5NjCu0DBtagk7CZ6ctZHJvzk7wzEiBS-0-79ad24d7d70b053406106a5348da9bb0)
(5)检索元素
使用count()方法计算列表中某个元素出现的次数。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_07.jpg?sign=1738884966-PRGzS4rqDMiCuVLi3uEn09Szi8GkLUUk-0-b05fb921286d02481d37c9a99a2b30f9)
使用in运算符返回某个元素是否在该列表中。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_08.jpg?sign=1738884966-1e2e1FQruwhLqcQXKFTrYSvtjU77cJDQ-0-4c27e5b83e07f523202691fd7b6fa256)
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/38_01.jpg?sign=1738884966-QxiEi1AShSnSTLzsBO8uFMYduMfD54kN-0-45f28b334a54a3c7013ec63286f9bcf9)
(6)删除元素
方法1:使用del语句删除某个特定位置的元素。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/38_02.jpg?sign=1738884966-PEgMJc0R70Jwui6w1sghWbHBmI5x51Hh-0-ffa7c15382edd24ba67153f7fdbcef48)
方法2:使用remove方法删除某个特定值的元素。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/38_03.jpg?sign=1738884966-Y5HcupTIaLhkhQnbYninm4Jk7rvYQBu3-0-014a1a5572f1ea96ded4f2134965fbc9)
方法3:使用pop(参数)方法弹出指定位置的元素,缺省参数时弹出最后一个元素。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/38_04.jpg?sign=1738884966-p3XwX0PiSwkBls4trrE1roDdyL9xLF0V-0-6f8263d724151e3de28138d3a6e190d0)
列表方法如表3-1所示。
表3-1 列表方法
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/39_01.jpg?sign=1738884966-t9eT8BkvniyIL0T8KCxAm71ttMECVP2s-0-18c5eacbecc3277fff515ae1bafbbece)
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=1738884966-5nvPYSm9MXn0QywZAEHIsfSyJCqylBgO-0-3324099571eb9f9efab7653cedf1d21a)
当创建只包含一个元素的元组时,需要注意它的特殊性。此时,只把元素放在圆括号里是不行的,这是因为圆括号既可以表示元组,又可以表示数学公式中的小括号,从而产生歧义。因此,Python规定:当创建只包含一个元素的元组时,需在元素的后面加一个逗号“,”。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/39_03.jpg?sign=1738884966-bTjKII60HGy73t7mnNXDlXtzBsCTqCaA-0-a63e97abc1cf9683db146ee97bde3038)
(2)访问元组
元组可以使用下标索引来访问元组中的值。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/40_01.jpg?sign=1738884966-0SlVeYnZiKQHOtTMEWxpNoz3wTWc4P4O-0-b0773e37fed475fdd5605d97d69f0fb1)
(3)元组连接
元组可以进行连接操作。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/40_02.jpg?sign=1738884966-nIeU5at0vg8TqecSFldRR6qqKoCBu5um-0-594c80373c98cbb6e363d4cff5d4c071)
(4)删除元组
元组中的元素值是不允许删除的,但可以使用del语句删除整个元组。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/40_03.jpg?sign=1738884966-8SogMow7lRvHgTQeggt2A8HtqpOx3Axb-0-2cc6c3791dca6411a0cdab8904e594ca)
3.2.3 字符串
字符串(String)与列表和元组都是序列,其方法如表3-2所示。
表3-2 字符串方法
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/40_04.jpg?sign=1738884966-gCRpE0IbwDw9L2DhjUGCqKwOIEm7I8Ba-0-87bb74f7a3bedbfef5ac182f4c221a80)
下面介绍字符串的操作。
(1)index举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/41_01.jpg?sign=1738884966-fHEVvEgvZ6JHbpthRKaacCeeL0odZFPI-0-94ac3259af50287f7ec54fbb975f1d8e)
(2)find举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/41_02.jpg?sign=1738884966-V1neP5ja4sljDlgG8zDhSpRQgnYIePYh-0-796191ec2dd53f89f1abf8acd538c357)
(3)replace举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/41_03.jpg?sign=1738884966-skedM2QW4ELW0TSInNoF7oB1RxKrlkzl-0-127998cd14e1066bceee65524d399a99)
(4)count举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/41_04.jpg?sign=1738884966-IBViDmI7bIoyogotedQPInq740UsPJNI-0-033d10e53a71ae854076a34ee0754c8c)
(5)split举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/41_05.jpg?sign=1738884966-CzXvZiJndChv0dcUacWzSWo230utpSeW-0-3b47e7217fba6fddf4925724cf60aa05)
(6)join举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/42_01.jpg?sign=1738884966-i3DTcQ49aKcm2mlh3ZdKB9EVKyTzvzfk-0-a7e308c1b8b2c7f196c243812a96a32f)
【例3-1】 输入一段字符,统计其中单词的个数,单词之间用空格分隔。
【解析】连续一段不含空格字符的字符串就是单词。将连续的若干个空格看作一个空格,因此,单词的个数可以由空格数来决定。如果当前字符是非空格,而它的前一个字符是空格,便认为是新单词的开始,累计单词个数的变量加1;如果当前字符是非空格字符,而它的前一个字符也是非空格字符,则认为是旧单词的继续,积累单词个数的变量保持不变。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/42_02.jpg?sign=1738884966-fhOXRpm9pDyDSPTYDbfrmJDTcjDZoagR-0-a1f7942694681ead058f4343606c0b14)