
1.2.4 数据结构
Python中常用的数据结构有6种:数字、字符串、列表、元组、集合和字典。其中使用频率较高的是数字、字符串、列表和字典。
1.数字
数字(number)有4种类型,分别为int(整数)、float(小数)、complex(复数)和bool(布尔值)。其中bool只有True和False两种值,True和False本质是数字1和0,可以使用type()函数查询类型,示例代码如下:

运行结果如下:

2.字符串
字符串(string)的组成内容可以是数字、字母、汉字和符号等任何可以在计算机上表示出来的一串字符。字符串放置在一对单引号(')或双引号(")中,示例代码如下:

运行结果如下:

注意:在表示字符串时,最好统一使用一种字符串表示方式,本书均采用单引号的方式来引用字符串。如果字符串中有特殊字符,但希望具有普通意义,而不具有特殊意义,就需要在字符串左侧加r。例如'\n'将被视为换行符,而r'\n'将被视为\后跟的字符n。
要获取字符串中的某部分字符串,可以通过切片方式来截取。在对字符串切片时默认的起始位置为0。下面罗列了几种基本的切片方式,用户可以根据这些切片原则衍生出更多的切片方法,示例代码如下:

运行结果如下:

3.列表
列表(list)可有序地存储一组数据元素。数据元素置于一对中括号之间,元素之间用英文半角逗号分隔,如[1,2,3]。列表中的元素可以是任何数据类型,并且可以对列表进行修改,下面讲解常用操作。
1)列表的添加
使用append()函数向列表末尾添加单个元素,也可以使用extend()函数向列表末尾添加多个元素,示例代码如下:

运行结果如下:

2)列表的删除
使用pop()函数删除列表中指定下标对应的元素,也可以使用remove()函数删除列表中指定名称的元素,如果列表中有多个相同名称的元素,则只删除第1个,示例代码如下:

运行结果如下:

3)列表的切片
列表的切片与字符串的切片方式一样,通过指定列表的下标完成切片操作,下面罗列了常见的列表切片方式,示例代码如下:

运行结果如下:

注意:如果列表切片的结果只有1个元素,则显示为标量值;如果切片的结果有多个元素,则显示为列表。
4)列表的修改
要修改列表中的元素,必须先用切片的方法获取要修改的元素,然后将修改的数据赋值给切片结果。可以修改单个元素,也可以修改连续的多个元素,示例代码如下:

运行结果如下:

注意:如果切片结果是标量值,则提供修改的数据就是标量值;如果切片结果是列表,则提供修改的数据就是列表。
4.元组
元组(tuple)可有序地存储一组数据元素。数据元素置于一对圆括号之间,元素之间用英文半角逗号分隔,如(1,2,3)。元组中的元素可以是任何数据类型。不能对元组中的元素做修改,只能做切片设置,下面列出了元组常见的切片方法,示例代码如下:

运行结果如下:

注意:如果元组中只有1个元素,则需要在这个元素的后面加上逗号。例如数字100,正确的表示方法为(100,),表示为(100)是错误的。
5.集合
集合(set)是由唯一元素组成的无序集。数据元素置于一对花括号之间,元素之间用英文半角逗号分隔,如{1,2,3}。集合里的每个元素必须保持唯一性,如果集合中的元素有重复,则在输出时会自动去做重复处理,示例代码如下:

运行结果如下:

注意:集合是无序集的,即集合中元素的位置无法固定,所以不能像列表、元组一样做切片。
6.字典
字典(dict)是最重要的数据类型之一。每个元素由键值对组成,键与值之间用半角冒号分隔,键在字典中必须保持唯一性,值可以有重复。元素置于花括号中,元素之间用逗号分隔,如{'梨子':99,'苹果':95,'橙子':91}。
获取键对应的值,示例代码如下:

运行结果如下:

修改键对应的值,示例代码如下:

运行结果如下:

要获取字典的键和值的相关信息,有以下3种常用操作。
(1)获取字典中所有的键用keys()方法。
(2)获取字典中所有键对应的值用values()方法。
(3)获取字典中所有的键值对用items()方法。
示例代码如下:

运行结果如下:
