![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=1739284109-alIckln71V5iAHqcAb9mwI0qZJTBIuhF-0-ce0f6f13d751bf6023177e88c5f67937)
Python创建列表时,解释器在内存中生成一个类似数组的数据结构,数据项自下而上存储,如图3-1所示。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/36_02.jpg?sign=1739284109-y9RAprGja8ynGOSB6t5HS7vEyOnZOxof-0-c0d7cef1db32e606b409e10f814d5eb0)
图3-1 列表存储方式
下面介绍列表操作。
(1)创建列表
使用“=”将一个列表赋值给变量。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/36_03.jpg?sign=1739284109-kIHakZQj8EG5oDPvvvY5fxLYmpwcmX14-0-d50fdb243fbc5d912993c7dca1c773ab)
(2)读取元素
用列表名加元素序号访问列表中某个元素。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_01.jpg?sign=1739284109-uOEw0CQJnwbjgw2rtczSUcYOgdAmC6lb-0-fa520c0e3412692b29034c6d88599e90)
(3)修改元素
只需直接给元素赋值。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_02.jpg?sign=1739284109-sMjB6ex9MOfo99Tt2V3PoSpvqgOaP0rQ-0-b7e345a079649a6f95c7dd313d6cfb1a)
(4)增加元素
方法1:使用“+”将一个新列表附加在原列表的尾部。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_03.jpg?sign=1739284109-70VxvPe9TRXfxvW8agBTc3qp4KUtQ0ru-0-0443642a0c20edae4033620291f7d129)
方法2:使用append()方法向列表尾部添加一个新元素。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_04.jpg?sign=1739284109-OilFGJaSrOUx28zW5okth0rZusr5G3GH-0-b247bb7040167674864f39f568b16aef)
方法3:使用extend()方法将一个列表添加在原列表的尾部。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_05.jpg?sign=1739284109-TA7TqROYezMclmkNVYMxOSD286wBd8OB-0-b4c55fb61b13f38d7bf2a4083526d568)
方法4:使用insert()方法将一个元素插入到列表的任意位置。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_06.jpg?sign=1739284109-nWcpUb17tglwcuIRvlwz7K1FsiVB4hKS-0-fe503ea2d35f64c76917e27c27bd7816)
(5)检索元素
使用count()方法计算列表中某个元素出现的次数。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_07.jpg?sign=1739284109-NNmzI2vUC1av7ZVmCvFyRgAP1OQFCDBN-0-7ddaf27fc7cd3fd4eafa0407534368a2)
使用in运算符返回某个元素是否在该列表中。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/37_08.jpg?sign=1739284109-jOEO1BkD6mCyALkM0SZLk8aAbHJ8TP1t-0-815651ba46fa714dc23eca39e51d7adc)
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/38_01.jpg?sign=1739284109-F5Z0xW26YsAxY1hGIy2KAA1TgMt0qQUO-0-4ec07dc914fb189878d4e776ea39f40a)
(6)删除元素
方法1:使用del语句删除某个特定位置的元素。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/38_02.jpg?sign=1739284109-sWbIUk8n6K1woGwR9fHq1dViraa7xKKN-0-6c2ff0ac3535b1033537c668871f99fd)
方法2:使用remove方法删除某个特定值的元素。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/38_03.jpg?sign=1739284109-Fc0cpFlpjpwKkayaboKLfpRmJzgDVOO3-0-56695537aa3a59b6f3f3c1b6b062657a)
方法3:使用pop(参数)方法弹出指定位置的元素,缺省参数时弹出最后一个元素。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/38_04.jpg?sign=1739284109-eKOl9ZB7RWKolLpmrvlK597tkGmvUmyA-0-f54acf6e2a27a12536ee0f903f33b689)
列表方法如表3-1所示。
表3-1 列表方法
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/39_01.jpg?sign=1739284109-JJPShAkKsm3SWekIx34Q9cHuDilsPgS0-0-4e361f20faf2969b4a181cf4e1fcca26)
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=1739284109-K1Xd6C6aNbkxtnekvHOM20Djquwl2dPE-0-1cdfd74cabde40ea1fc1d89baaadaa58)
当创建只包含一个元素的元组时,需要注意它的特殊性。此时,只把元素放在圆括号里是不行的,这是因为圆括号既可以表示元组,又可以表示数学公式中的小括号,从而产生歧义。因此,Python规定:当创建只包含一个元素的元组时,需在元素的后面加一个逗号“,”。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/39_03.jpg?sign=1739284109-ZE2oDXgSTZtyGGREbFlCSxv79zxAxNZP-0-5502d369503dd94f7a8d901418b9ac93)
(2)访问元组
元组可以使用下标索引来访问元组中的值。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/40_01.jpg?sign=1739284109-ifO2MGEZgMH5geghsth2jx5JSW2fELUF-0-1e2658f78473deb03088007587d7568f)
(3)元组连接
元组可以进行连接操作。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/40_02.jpg?sign=1739284109-qOPWtGC3Gix5uwToGg2Po2eLG6NNhe8T-0-e972e6198497781184695e8b2d015414)
(4)删除元组
元组中的元素值是不允许删除的,但可以使用del语句删除整个元组。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/40_03.jpg?sign=1739284109-ekpaViUlDAZlFB7pgh0lVLOSDKSiIlfn-0-1fb72930e336ddac36e0a3e4528771e5)
3.2.3 字符串
字符串(String)与列表和元组都是序列,其方法如表3-2所示。
表3-2 字符串方法
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/40_04.jpg?sign=1739284109-Qq9MYwMWUIN63B8a3VRTntEHZGJOv1ZG-0-256b52e0f09cb01cafec59fce0dd360e)
下面介绍字符串的操作。
(1)index举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/41_01.jpg?sign=1739284109-lrVZpv7IhOLmZCqImnrZIG3vgcnuetUh-0-c5d381a6f32cde7d28a91ba2baa5a1ec)
(2)find举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/41_02.jpg?sign=1739284109-5zlRBMygvzcW8RTNS7tZ1yvVSNtJoKGF-0-fb2cd1009422978edef22e2895962e07)
(3)replace举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/41_03.jpg?sign=1739284109-MXDtJXUES77RsJlNGZBxLkSc4ABw7FDT-0-c573f86f279202c30df9254d9e1a2e29)
(4)count举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/41_04.jpg?sign=1739284109-6oTVTRzJDGqJhVIExClrptLMpDy2gpvg-0-2530be06c6af1f57b9294fcd2203f010)
(5)split举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/41_05.jpg?sign=1739284109-LD1U6NMYYCy6UjEU9sXEsH5TiKFNqOy7-0-ba82b9cff48824d1a87206492906ce76)
(6)join举例
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/42_01.jpg?sign=1739284109-q4t824cr0PZVcbyKMsL4jlcXYEHVLlT5-0-8e35a0226767d123b5454f027e520bb7)
【例3-1】 输入一段字符,统计其中单词的个数,单词之间用空格分隔。
【解析】连续一段不含空格字符的字符串就是单词。将连续的若干个空格看作一个空格,因此,单词的个数可以由空格数来决定。如果当前字符是非空格,而它的前一个字符是空格,便认为是新单词的开始,累计单词个数的变量加1;如果当前字符是非空格字符,而它的前一个字符也是非空格字符,则认为是旧单词的继续,积累单词个数的变量保持不变。
![](https://epubservercos.yuewen.com/1536BF/18123625601962306/epubprivate/OEBPS/Images/42_02.jpg?sign=1739284109-FMsVFf8rvWiT3e1u83QbspPZLqZdBCNz-0-7fce4c1862636ae4cc14cb2f6e49821f)