
1.2.1 字符串、列表、元组、字典和集合
下面介绍Python中的字符串、列表、元组、字典和集合等数据类型,这些是Python中的基础数据类型,可以帮助用户快速进行数据分析、机器学习等。
1.字符串
字符串(String)是由数字、字母、下画线组成的一串字符,包括标点符号、汉字等。字符串需要用单引号、双引号或三引号引起来,如'abc'和"abc"。
字符串中的每个字符都是有顺序编号的,把这个编号称为索引(Index)。索引顺序是从0开始的,由左往右按顺序排列,0,1,2,…,n。索引也可以是逆序,从右往左排列,-1,-2,-3,…,-n。
例如,字符串name="扎依·穆罕默德",共有7个字符。如果提取“扎依”两个字符,则可以使用其索引,即name[0:2],这种方式称为切片,具体的使用方式在列表中给出。
2.列表
列表是Python中最基本的数据类型之一。列表中的每个元素都有一个数字作为它的索引。列表也可以通过索引获取列表中的元素。
在Python中生成一个列表可以通过list()函数或方括号“[]”来完成,如生成包含5个元素的列表A的代码如下所示:

可以使用len()函数计算列表的长度,如下面的程序计算出的列表A的长度为5:

生成一个列表后,可以通过索引获取列表中的元素,其中从前往后的索引是从0开始的,而从后往前的索引是从-1开始的,如下所示:

获取列表中的一个范围内的元素,可以通过切片来完成。例如,使用切片“0:3”,表示要获取索引为0~3的元素(不包含索引为3的元素)。使用下面的程序可以获取列表中的多个元素:

可以使用append()方法在已经生成的列表的后面添加新的元素,并且元素的数据类型可以多种多样,数字、字符串和列表都是可以的。例如,下面的程序在列表A的末尾添加了新的数字和字符串:

在列表的指定位置插入新的内容可以使用insert()方法,该方法的第一个参数是内容要插入的位置,第二个参数是要插入的内容。例如,在列表A的索引为5的位置插入一个字符串的程序如下所示:

删除列表中的末尾元素可以使用pop()方法,该方法每次删除列表中的最后一个元素。例如,删除列表A中的末尾元素可以使用下面的程序:

还可以使用del删除列表中指定位置的元素。例如,删除列表A中索引为2的元素:

列表中的元素可以是Python中的任何数据类型。例如,下面生成的列表B中包含字符串和列表:

可以使用加号“+”将多个列表进行组合,使用乘号“*”则可以将列表中的内容进行重复,从而生成新的列表,如下所示:

使用reverse()方法可以获取列表的逆序,使用count()方法可以计算列表中相应元素出现的次数,使用sort()方法可以对列表中的元素进行排序,使用min()函数和max()函数可以计算出列表中的最小值和最大值。相关程序示例如下所示:

3.元组
元组和列表非常类似,但是元组中的元素一旦初始化就不能被修改。创建元组可以使用圆括号“()”或tuple()函数。在使用圆括号时,只有一个元素的元组在定义时必须在第一个元素后面加一个逗号“,”,如下所示:


和列表一样,使用索引可以获取元组中的元素,使用len()函数可以计算元组的长度,如下所示:

可以使用加号“+”将多个元组进行拼接,如将元组C和("A","B","C")进行拼接可以获得新元组D,如下所示:

使用del可以将指定的元组删除。例如,在删除元组C1之后,变量环境中将不再存在C1,自然也无法输出C1的内容:

获取重复的元组可以使用乘号“*”来完成。例如,将元组(1,2,"A","B")重复两次,可以使用(1,2,"A","B")*2。使用min()函数和max()函数可以分别获取元组中的最小值和最大值。相关示例如下所示:


4.字典
字典是Python中最重要的数据类型之一,其中字典的每个元素的键值对(key:value)使用冒号“:”分隔,键值对之间用逗号“,”分隔,整个字典包括在花括号“{}”中。例如,初始化字典D可以使用如下形式:

在字典D中,可以通过字典的keys()方法查看字典中的键,通过values()方法查看字典中的值,并且可以通过字典中的键获取对应的值,如下所示:

获取字典中的内容还可以使用get()方法,该方法通过字典中的键获取对应的元素,如果没有对应的键值对则输出None,如下所示:

pop()方法可以利用字典中的键删除对应的键值对。针对字典中的键值对,可以将相应的键赋予新的值。计算字典中键值对的数量可以使用len()函数。相关示例如下所示:


5.集合
大多数程序语言都提供集合。集合中不能保存重复的数据,所以它具有过滤重复数据的功能。下面创建一个集合:

对于一个数组或元组来说,也可以使用set()函数去重,如下所示:

注意:集合中的元素是无序的,因此不能用set[i]这样的方式获取其中的元素。
集合中的操作如下所示:

