![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=1738861013-nNYWwgPhLzV2eEWYVaD53gbZ2S8gDQr3-0-28aff4352cccc08d54c9dd65d7cf4746)
Python创建列表时,解释器在内存中生成一个类似数组的数据结构,数据项自下而上存储,如图3-1所示。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/36_02.jpg?sign=1738861013-HTSsRIiQWmNUADSJC3lh5MgcEruz1BYL-0-8e40c50fb54f9019acdd57cae77257dd)
图3-1 列表存储方式
下面介绍列表操作。
(1)创建列表
使用“=”将一个列表赋值给变量。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/36_03.jpg?sign=1738861013-Fk7xBqrbOPGX2pbT04a4oZ6cAroTkxFk-0-cb7321c22de86326071aa0bb60fe3381)
(2)读取元素
用列表名加元素序号访问列表中某个元素。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_01.jpg?sign=1738861013-N61tQ4tDTzGRMs8jcFmSrGfQNNSoXm1D-0-e418e2b8a1c760a1a65965910c962854)
(3)修改元素
只需直接给元素赋值。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_02.jpg?sign=1738861013-WuOVGb7FwYMP1s0ksI7d10uOgpcy2vBo-0-0e46f9ada11074fc0b7725f9a39a837f)
(4)增加元素
方法1:使用“+”将一个新列表附加在原列表的尾部。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_03.jpg?sign=1738861013-8T09zpWaZhHMeZeYG2vAZBu54iC2Azns-0-bcd3f7ebd95f7efd866c2e7629046997)
方法2:使用append()方法向列表尾部添加一个新元素。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_04.jpg?sign=1738861013-afYxJczNG9O5vltKFvbsQnrWl7Aw51FO-0-cf897fd4e7ee33a9f53977bceb09a5e2)
方法3:使用extend()方法将一个列表添加在原列表的尾部。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_05.jpg?sign=1738861013-zBiKfZTA3XUBPcv7OP8NmdxM1zlFwtBL-0-74c1c8e19c7f61544f3d7cc9379d1b34)
方法4:使用insert()方法将一个元素插入到列表的任意位置。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_06.jpg?sign=1738861013-s7jXM6jvutPqO27EUHdWjWbG6PKDfC4e-0-0db88fc29215a9bf26876c0a2fd528ac)
(5)检索元素
使用count()方法计算列表中某个元素出现的次数。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_07.jpg?sign=1738861013-6Y258VkA1MbTrR13wK6GJTTrjeQZQn9E-0-60de8e8237ffbbc71f040230509e5ff0)
使用in运算符返回某个元素是否在该列表中。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_08.jpg?sign=1738861013-Beh0MjCP9AwJJDvUSFIeVR66hti0vjH8-0-995b8cc9d9091c8bb0907a3ea4841684)
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/38_01.jpg?sign=1738861013-Kt2wzy53SXaScU86gn8vh064JKdiF7Gx-0-4b83466e3d7e5dad1f599d6d6ed3959d)
(6)删除元素
方法1:使用del语句删除某个特定位置的元素。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/38_02.jpg?sign=1738861013-bjjerv6gaVr2vipVZlfrzKv52bxOK66i-0-8634b9e907aa621a04d4505b7835d315)
方法2:使用remove方法删除某个特定值的元素。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/38_03.jpg?sign=1738861013-O9di3oHlwCssQDfmnpP5tNl8yMHSoXkc-0-a2d6579670626f9b3c856779ae914a24)
方法3:使用pop(参数)方法弹出指定位置的元素,缺省参数时弹出最后一个元素。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/38_04.jpg?sign=1738861013-v7WQB8iikgwZDAyD8QqgA0H3QLptmpsJ-0-0511865ad141895914451c237eceb57b)
列表方法如表3-1所示。
表3-1 列表方法
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/39_01.jpg?sign=1738861013-4yJGpa7DM6Cl6M2ulgI7YzhWfImNvFH0-0-95c5e2eed9109f014d9e2caf23f2c79e)
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=1738861013-UCEcmCSDMGq5fFRVd9qFSzG2cNrp8ejx-0-eaf22e0f5f624c44ef04e4ff646ad251)
当创建只包含一个元素的元组时,需要注意它的特殊性。此时,只把元素放在圆括号里是不行的,这是因为圆括号既可以表示元组,又可以表示数学公式中的小括号,从而产生歧义。因此,Python规定:当创建只包含一个元素的元组时,需在元素的后面加一个逗号“,”。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/39_03.jpg?sign=1738861013-BoQVaxCWnh5hj7pganQrBZTzP2f2aWvA-0-855896b6db9e95787c2e42334e08e578)
(2)访问元组
元组可以使用下标索引来访问元组中的值。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/40_01.jpg?sign=1738861013-m5IaEpzuMAHXm2CN5kji3pjF41ecdccm-0-9b972a35fd9cf85932eba2726ca4d4e8)
(3)元组连接
元组可以进行连接操作。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/40_02.jpg?sign=1738861013-dR78S2DvBDWOr3UJuE1EUKREiO6Ldjpo-0-04a03d63a6e055a83e2e40ac93e568e6)
(4)删除元组
元组中的元素值是不允许删除的,但可以使用del语句删除整个元组。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/40_03.jpg?sign=1738861013-Txc6gi6mvamltqJWB18vnYLHEN3P0qez-0-4676f30ee934c36cac17e929b0767802)
3.2.3 字符串
字符串(String)与列表和元组都是序列,其方法如表3-2所示。
表3-2 字符串方法
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/40_04.jpg?sign=1738861013-iYSkXw7xDTSF784pjN29dYLosLsBq6z6-0-9035a63b1000896eb96b427e0e4f97a4)
下面介绍字符串的操作。
(1)index举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/41_01.jpg?sign=1738861013-Eqaq8iegoSXaUMXj8zW8WOc3Kd6h7NeH-0-4a1b1e6dc176a9c4ba692c608bc9091f)
(2)find举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/41_02.jpg?sign=1738861013-vQWbgDXWUzkqkdgohdaOsNsGGtcdItzD-0-9e9c18317e911a6444a55dc78da93168)
(3)replace举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/41_03.jpg?sign=1738861013-lHDYmuCJvgGy5rspm1h57NpNk0zpyp6q-0-a41c5f268000191d8e499c3b2ee17989)
(4)count举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/41_04.jpg?sign=1738861013-vBa6quE73IAKr3Ib5DelGu1xtyv8scTB-0-2b7bce9b19389d79ba59c651228ad482)
(5)split举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/41_05.jpg?sign=1738861013-IwjG2SA4hyPGfMhf6Ne39S5OgOnlCkSB-0-d2322bfffa989f7b3b99bb47773323e9)
(6)join举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/42_01.jpg?sign=1738861013-XXPtetPbKoGlnVWERFn3jWmP8xNz1sTQ-0-140bfa92ad388e9f720cc4bf94ee0724)
【例3-1】 输入一段字符,统计其中单词的个数,单词之间用空格分隔。
【解析】连续一段不含空格字符的字符串就是单词。将连续的若干个空格看作一个空格,因此,单词的个数可以由空格数来决定。如果当前字符是非空格,而它的前一个字符是空格,便认为是新单词的开始,累计单词个数的变量加1;如果当前字符是非空格字符,而它的前一个字符也是非空格字符,则认为是旧单词的继续,积累单词个数的变量保持不变。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/42_02.jpg?sign=1738861013-FHPny97WRD8aLHEUGF2orsIDZpM2f5R0-0-77e15a97f8038eac31e50e7b6c238c3b)