
1.3 Python数据类型
在Python中有6大数据类型:number(数字)、string(字符串)、list(列表)、tuple(元组)、set(集合)、dictionary(字典)。
1.3.1 数字
1.数字类型
Python 3支持4种类型的数字:int(整数类型)、float(浮点类型)、bool(布尔类型)、complex(复数类型)。在Python3中可以使用type()函数来查看数字类型,如下所示。

2.运算类型
Python 3所支持的运算类型包括加法、减法、除法、整除、取余、乘法和乘方。

1.3.2 字符串
1.字符串类型
字符串就是在单引号、双引号和三引号之间的文字。单引号字符串示例:print('welcome to hangzhou'),其中所有的空格和制表符都照原样保留。单引号与双引号的作用其实是一样的,但是当引号里包含单引号时,则该引号需使用双引号,例如print("what's your name?")。三引号可以指示一个多行的字符串,也可以在三引号中自由使用单引号和双引号,如下所示。

2.字符串的表示方式
如果要在单引号字符串中使用单引号本身,在双引号字符串中使用双引号本身,则需要借助转义符(\),如下所示。

输出结果如下。

注意:在一个字符串中,行末单独的反斜杠表示下一行继续,而不是开始写新的一行(详见1.2.2节)。另外,可以使用双反斜杠(\\)来表示反斜杠本身,而\n表示换行符。
如果想要指示某些不需要使用转义符进行特别处理的字符串,那么需要指定一个原始字符串。原始字符串通过给字符串加上前缀r或R的方式指定,比如需要原样输出\n而不是令其换行,则代码如下。

输出结果如下。

3.字符串的截取
字符串的截取格式如下所示。

此处解释一下为什么加1:字符串的截取从start_index开始,到end_index结束,也就是大家常理解的左闭右开,如下所示。

4.字符串运算
尝试下面的代码:

此时,运行程序会报错,错误提示如下所示,为什么呢?

字符串(string)只是Python中的一种数据类型,下面的语句在赋值的时候右侧用了单引号,数据类型是字符串。

下面语句的数据类型为整型(int)。

不同的数据类型之间是不能进行运算的,但是,不同数据类型可以相互转换,以上代码进行修改后就可以正常运行,修改后的代码如下。

注意:“+”号用在字符串中间是连接符,用在数值中间是运算符;int()将括号中的数值或文本转换成整型数据类型。
运行代码后,即时窗口中打印的结果是2,如图1-15所示。

图1-15
四则基础运算如下。

因为相加的双方是数值型数据,所以此时“+”号是运算符,运行结果如下。

当相加的双方是字符型数据时,“+”号是连接符。

运行结果如下。

1.3.3 列表
1.列表格式
Python列表是任意对象的有序集合,写在中括号([])里,元素之间用逗号隔开。这里的“任意对象”,既可以是列表,也可以是字符串,如下所示。

2.列表的切片
每个list(list是笔者自定义的变量)中的元素从0开始计数,如下代码可以选取list中的第一个元素。

运行结果如下。

列表删除操作可以使用remove()方法,只需要在变量名称后面加一个点号,就可以轻松调用。PyCharm有自动联想功能,选中目标方法或函数,按【Tab】键即可快速键入,如图1-16所示。

图1-16
以下代码用于删除第3个元素,并用print()函数将结果打印出来。其中remove()方法用于删除列表的元素。

1.3.4 元组
元组与列表类似,不同之处在于元组的元素不能修改。元组写在小括号(())里,元素之间用逗号隔开,如下所示。

运行结果如下。

1.3.5 集合
集合是一个无序、不重复元素序列,可以使用大括号({})或set()函数创建集合。需要注意的是,一个空集合必须使用set()函数创建而不能使用大括号,因为大括号是用来创建空字典的,如下所示。

运行结果如下。

1.3.6 字典
字典是一种可变容器模型,且可存储任意类型的对象,用{}标识。字典是一个无序的键(key)值(value)对的集合,格式如下所示。

接下来创建一个字典,代码如下。

运行结果如下。

其中name是一个key(键),liming是一个value(值)。
当字典增加数据时,可以使用下面的方法。

运行结果如下。

当字典删除数据时,可以使用del()函数,代码如下。

运行结果如下。
