购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3 数据类型

Python中有6种基本数据类型:数字、字符串、列表、字典、元组和集合。本节将对这几种数据类型进行讲解。

1.3.1 数字

Python中的数字分为整型和浮点型两种。

整型数字(用int表示)与数学中的整数一样,都是指不带小数点的数字,包括正整数、负整数和0。下述代码中的数字都是整型数字:

1  a = 10
2  b = -80
3  c = 8500
4  d = 0

使用print()函数可以直接输出整数,演示代码如下:

1  print(10)

运行结果如下:

1  10

浮点型数字(用float表示)是指带有小数点的数字。下述代码中的数字都是浮点型数字:

1  a = 10.5
2  pi = 3.14159
3  c = -0.55

浮点型数字也可以用print()函数直接输出,演示代码如下:

1  print(10.5)

运行结果如下:

1  10.5

1.3.2 字符串

顾名思义,字符串(用str表示)就是由一个个字符连接起来的组合。组成字符串的字符可以是数字、字母、符号(包括空格)、汉字等。字符串的内容需置于一对引号内,引号可以是单引号、双引号或三引号,但必须是英文引号。

定义字符串的演示代码如下:

1  print(520)
2  print('520')

运行结果如下:

1  520
2  520

输出的两个520看起来没有任何差别,但是前一个520是整型数字,可以参与加减乘除等算术运算,后一个520是字符串,不能参与加减乘除等算术运算,否则会报错。

下面分别讲解用3种形式的引号定义字符串的方法。

1. 用单引号定义字符串

用单引号定义字符串的演示代码如下:

1  print('明天更美好')

运行结果如下:

1  明天更美好

2. 用双引号定义字符串

用双引号定义字符串和用单引号定义字符串的效果相同,演示代码如下:

1  print("明天更美好")

运行结果如下:

1  明天更美好

需要注意的是,定义字符串时使用的引号形式必须统一,不能混用,即一对引号必须都是单引号或双引号,不能一个是单引号,另一个是双引号。

有时一行代码中会同时出现单引号和双引号,就要注意区分哪些引号是用于定义字符串的,哪些引号是字符串的内容。演示代码如下:

1  print("Let's go")

运行结果如下:

1  Let's go

上述代码中的双引号是定义字符串的引号,不会被print()函数输出,而单引号则是字符串的内容,会被print()函数输出。

3. 用三引号定义字符串

三引号就是3个连续的单引号或双引号。用三引号定义字符串的演示代码如下:

1  print('''2022,
2  一起加油!
3  ''')

运行结果如下:

1  2022,
2  一起加油!

可以看到,三引号中的字符串内容是可以换行的。如果只想使用单引号或双引号来定义字符串,但又想在字符串中换行,可以使用转义字符“\n”,演示代码如下:

1  print('2022,\n一起加油!')

运行结果如下:

1  2022,
2  一起加油!

除了“\n”之外,转义字符还有很多,它们大多数是一些特殊字符,并且都以“\”开头。例如,“\t”表示制表符,“\b”表示退格,等等。

在编程时,转义字符可能会给我们带来一些麻烦。例如,如果想输出一个文件路径,演示代码如下:

1  print('d:\number.xlsx')

运行结果如下:

1  d:
2  umber.xlsx

这个结果与我们预期的不同,原因是Python将路径字符串中的“\n”视为了一个转义字符。

为了正确输出该文件路径,可以将代码修改为如下两种形式:

1  print(r'd:\number.xlsx')
2  print('d:\\number.xlsx')

第1行代码通过在字符串前面增加一个字符r来取消转义字符“\n”的换行功能;第2行代码则是将路径中的“\”改为“\\”,“\\”也是一个转义字符,它代表一个反斜杠字符“\”。

运行结果如下:

1  d:\number.xlsx
2  d:\number.xlsx

1.3.3 列表

列表(用list表示)是最常用的Python数据类型之一,它能将多个数据有序地组织在一起,并方便地调用。

1. 列表入门

先来学习创建一个最简单的列表。例如,通过如下代码可以把5个姓名存储在一个列表中:

1  class1 = ['李白', '王维', '孟浩然', '王昌龄', '王之涣']

从上述代码可以看出,定义一个列表的语法格式为:

列表名 = [元素1, 元素2, 元素3 ……]

列表的元素可以是字符串,也可以是数字,甚至可以是另一个列表。如下所示的这行代码定义的列表就含有3种元素:整型数字1、字符串'123'、列表[1, 2, 3]。

1  a = [1, '123', [1, 2, 3]]

利用for语句可以遍历列表中的所有元素,演示代码如下:

1  class1 = ['李白', '王维', '孟浩然', '王昌龄', '王之涣']
2  for i in class1:
3    print(i)

运行结果如下:

1  李白
2  王维
3  孟浩然
4  王昌龄
5  王之涣

2. 统计列表的元素个数

如果需要统计列表的元素个数(又称为列表的长度),可以使用len()函数。该函数的语法格式为:

len(列表名)

演示代码如下:

1  class1 = ['李白', '王维', '孟浩然', '王昌龄', '王之涣']
2  a = len(class1)
3  print(a)

因为列表class1有5个元素,所以代码的运行结果如下:

1  5

3. 提取列表的单个元素

列表中的每个元素都有一个索引号,第1个元素的索引号为0,第2个元素的索引号为1,依此类推。如果要提取列表的单个元素,可以在列表名后加上“[索引号]”,演示代码如下:

1  class1 = ['李白', '王维', '孟浩然', '王昌龄', '王之涣']
2  a = class1[1]
3  print(a)

第2行代码中的class1[1]表示从列表class1中提取索引号为1的元素,即第2个元素,运行结果如下:

1  王维

如果想提取列表class1的第5个元素'王之涣',其索引号是4,则相应的代码是class1[4]。

“索引号从0开始”这个知识点与我们日常的思考习惯不同,初学者应给予重视。

4. 提取列表的多个元素——列表切片

如果想一次性提取列表中的多个元素,就要用到列表切片,其一般语法格式为:

列表名[索引号1:索引号2]

其中,索引号1对应的元素能取到,索引号2对应的元素取不到,俗称“左闭右开”。演示代码如下:

1  class1 = ['李白', '王维', '孟浩然', '王昌龄', '王之涣']
2  a = class1[1:4]
3  print(a)

在第2行代码的“[]”中,索引号1为1,对应第2个元素,索引号2为4,对应第5个元素,又根据“左闭右开”的规则,第5个元素是取不到的,因此,class1[1:4]表示从列表class1中提取第2~4个元素,运行结果如下:

1  ['王维', '孟浩然', '王昌龄']

当不确定列表元素的索引号时,可以只写一个索引号,演示代码如下:

1  class1 = ['李白', '王维', '孟浩然', '王昌龄', '王之涣']
2  a = class1[1:]  # 提取第2个元素到最后一个元素
3  b = class1[-3:]  # 提取倒数第3个元素到最后一个元素
4  c = class1[:-2]  # 提取倒数第2个元素之前的所有元素(因为要遵循“左闭右开”的规则,所以不包含倒数第2个元素)
5  print(a)
6  print(b)
7  print(c)

运行结果如下:

1  ['王维', '孟浩然', '王昌龄', '王之涣']
2  ['孟浩然', '王昌龄', '王之涣']
3  ['李白', '王维', '孟浩然']

5. 添加列表元素

用append()函数可以给列表添加元素,演示代码如下:

1  score = []  # 创建一个空列表
2  score.append(80)  # 用append()函数给列表添加一个元素
3  print(score)
4  score.append(90)  # 给列表再添加一个元素
5  print(score)

运行结果如下:

1  [80]
2  [80, 90]

6. 列表与字符串的相互转换

列表与字符串的相互转换在文本筛选中有很大的用处。将列表转换成字符串主要使用的是join()函数,其语法格式如下:

'连接符'.join(列表名)

引号(单引号、双引号皆可)中的内容是元素之间的连接符,如“,”“;”等。

例如,将class1转换成一个用逗号连接的字符串,演示代码如下:

1  class1 = ['李白', '王维', '孟浩然', '王昌龄', '王之涣']
2  a = ','.join(class1)
3  print(a)

运行结果如下:

1  李白,王维,孟浩然,王昌龄,王之涣

如果把第2行代码中的逗号换成空格,那么输出的就是“李白 王维 孟浩然 王昌龄 王之涣”。

将字符串转换为列表主要使用的是split()函数,其语法格式如下:

字符串.split('分隔符')

以空格为分隔符将字符串'hi hello world'拆分成列表的演示代码如下:

1  a = 'hi hello world'
2  print(a.split(' '))

运行结果如下:

1  ['hi', 'hello', 'world']

1.3.4 字典

字典(用dict表示)是另一种存储多个数据的数据类型。例如,假设class1里的每个姓名都有一个编号,若要把姓名和编号一一配对,就需要用字典来存储数据。定义一个字典的基本语法格式如下:

字典名 = {键1: 值1, 键2: 值2, 键3: 值3 ……}

字典的每个元素都由两个部分组成(而列表的每个元素只有一个部分),前一部分称为键(key),后一部分称为值(value),中间用冒号分隔。

键相当于一把钥匙,值相当于一把锁,一把钥匙对应一把锁。那么对于class1里的每个姓名来说,一个姓名对应一个编号,相应的字典写法如下:

1  class1 = {'李白': 85, '王维': 95, '孟浩然': 75, '王昌龄': 65, '王之涣': 55}

提取字典中某个元素的值的语法格式如下:

字典名['键名']

例如,要提取'王维'的编号,演示代码如下:

1  class1 = {'李白': 85, '王维': 95, '孟浩然': 75, '王昌龄': 65, '王之涣': 55}
2  score = class1['王维']
3  print(score)

运行结果如下:

1  95

如果想遍历字典,输出每个姓名和编号,演示代码如下:

1  class1 = {'李白': 85, '王维': 95, '孟浩然': 75, '王昌龄': 65, '王之涣': 55}
2  for i in class1:
3      print(i + ': ' + str(class1[i]))

这里的i是字典里的键,也就是'李白'、'王维'等姓名,class1[i]则是键对应的值,即每个姓名的编号。因为编号的数据类型为数字,所以在进行字符串拼接前需要先用str()函数将其转换为字符串。运行结果如下:

1  李白: 85
2  王维: 95
3  孟浩然: 75
4  王昌龄: 65
5  王之涣: 55

另一种遍历字典的方法是用字典的items()函数,演示代码如下:

1  class1 = {'李白': 85, '王维': 95, '孟浩然': 75, '王昌龄': 65, '王之涣': 55}
2  a = class1.items()
3  print(a)

运行结果如下。可以看到,items()函数返回的是可遍历的(键,值)元组数组。

1  dict_items([('李白', 85), ('王维', 95), ('孟浩然', 75), ('王昌龄', 65), ('王之涣', 55)])

1.3.5 元组和集合

相对于列表和字典来说,元组和集合用得较少,因此这里只做简单介绍。

元组(用tuple表示)的定义和使用方法与列表极为相似,区别在于定义列表时使用的符号是中括号[ ],而定义元组时使用的符号是小括号( ),并且元组中的元素不可修改。元组的定义和使用的演示代码如下:

1  a = ('李白', '王维', '孟浩然', '王昌龄', '王之涣')
2  print(a[1:3])

运行结果如下。可以看到,从元组中提取元素的方法和列表是一样的。

1  ('王维', '孟浩然')

集合(用set表示)是一个无序的不重复序列,也就是说,集合中不会有重复的元素。可用大括号{ }来定义集合,也可用set()函数来创建集合,演示代码如下:

1  a = ['李白', '李白', '王维', '孟浩然', '王昌龄', '王之涣']
2  print(set(a))

运行结果如下。可以看到,生成的集合中自动删除了重复的元素。 6qKX3iA+nzpJFVX5Ne9F/HSC5klEDwny05wpNqZhCnLA1ntDDa7KRCbZndwM+/Ks

1  {'李白', '王维', '王之涣', '孟浩然', '王昌龄'}
点击中间区域
呼出菜单
上一章
目录
下一章
×