零基础学会Python编程——数据也分类:常见数据类型

简介: 零基础学会Python编程——数据也分类:常见数据类型


前言

在编程时,我们会遇到各种各样的数据。Python 语言中的常用数据主要有数字型、字符串型、布尔型。本章将详细讲解这几种数据类型,以及不同数据类型之间的相互转换。


学习目标

  • 掌握不同数据类型之间的区别。
  • 掌握不同数据类型之间的相互转换。

一.常见数据类型

1.数字类型

数字型数据,就是与数字相关的数据类型。在 Python 语言中,数字型的数据类型主要有整数类型(int)和浮点数类型(float)。

(1) 整数类型

Python 中的整数类型的数据就是数学中的整数,整数类型能表示所有正整数、0 和负整数。

【例3-1】

下面演示创建一个整数类型数据,在shell模式下输入如下语句。

  • 第1行:定义一个变量a,并赋值 200。
  • 第2~3行:查看变量a的值。
  • 第4行:使用type函数查看变量a的类型。
  • 第5行:输出变量a为一个int类,即为整数类型数据。

(2)浮点数类型

Python 中的浮点数类型数据就像数学中的小数。由于浮点数在计算机内部是通过二进制的方式来存储,浮点数的运算不是绝对精确的,会存在微小的误差。

【例3-2】

下面演示创建一个浮点数类型数据,在 shell模式下输入如下语句。

  • 第1行:定义一个变量 b,并赋值 3.14159。
  • 第2~3行:查看变量b的值。    
  • 第4 行:使用type 函数查看变量b的类型。    
  • 第5行:输出变量b为一个float 类,即为浮点数类型数据。


2.布尔类型

不同于数字型数据,布尔(bool)类型数据只有两个值,即 True 和 False,分别代表真和假,通常用在条件判断和循环语句中。

(1)布尔型数据的取值

除了直接赋值,布尔类型数据通常通过比较运算和逻辑运算得到。

【例3-3】

下面演示创建一个布尔类型数据,在shell模式下输入如下语句。

  • 第1行:定义一个变量 a,并赋值 True。
  • 第2~3行:查看变量a的类型为布尔类型。
  • 第4行:定义一个变量 b,并赋值False。
  • 第5~6行:查看变量b的类型为布尔类型。
  • 第7~8行:比较运算1<3的结果为True。
  • 第9~10行:逻辑运算 True and False的结果为False。

(2)布尔型数据的使用

布尔型数据非常简单,常用在判断语句中,作为判断的条件。接下来举例说明布尔型数据的编程使用方法。

【例3-4】

下面演示在判断语句中使用布尔类型数据,在 shell 模式下输入如下语句。

  • 第1行:定义一个变量a,并赋值 True。
  • 第2~3行:使用if判断语句,如果条件为真,则输出字符串“a为真”(注意第3行,最前面的
  • “…”是shell模式的换行提示,不需要输人。但print前面需要有1个制表符或4个空格的缩进)。
  • 第4行:程序运行结果,可以看到输出了字符串“a 为真”。


3.字符串类型

在 Python 中,凡是被引号(单引号 / 双引号 / 三引号)括起来的数据都称为字符串。如 "100"、'abc'都是字符串。

(1) 字符串的创建

在 Python 语言中,创建字符串可以通过 str(),也可以通过单引号或双引号直接创建,下面一一举例说明。

【例3-5】

使用str函数创建一个空字符串,在 shell模式下输入如下语句。

  • 第1行:使用str函数创建一个空字符串str1。
  • 第2行:查看字符串str中的内容,因为str1一个空字符,所以第3行中输出了一对引号引号里面没有任何元素。
  • 第4行:使用type 函数查看变量strl的类型。
  • 第5行:输出变量strl 为一个str 类,即为字符串类型数据。

【例3-6】

使用一对引号创建一个字符串,在shell模式下输入。

  • 第1行:使用一对引号创建一个字符串str2.
  • 第2 行:查看字符串str2 中的内容。
  • 第 4 行:使用type 函数查看变量str2的类型。
  • 第 5 行:输出变量str2 为一个str 类,即为字符串类型数据。

1.>>> str2 - "Crossin"
2.>>> str2
3.'Crossin
4.>>> type(str2)
5.<class 'str'>

(2)字符串的切片

切片是 Python 语言中特有的功能,通过一行代码就可以实现获取子串的功能。切片有三个参数 [a:b:c] ,a 是起始位置,不提供则默认为开头;b 是结束位置,不包含在子串内,不提供则默认至结尾;c 是间隔步长,不提供可省去第 2 个冒号,默认为 1,负数为倒序。

注意:字符串的索引是从0开始的,所以索引位置n表示第n+1个字符。

【例3-7】

字符串的切片示例如下,在shell模式下编写如下程序。

  • 第1行:创建一个字符串s,s的值为abcd123456789。
  • 第2~3行:从索引为1开始取,总共取出4-1 即3个字符“bcd”。
  • 第4~5行:从索引为10开始倒序取,总共取出10-1即9个字符“7654321dc”。
  • 第6~7行:从索引为1开始正序取,步长为2,取出的字符为“bd246”。  

(3)split 函数

在 Python 编程中,除了上述的切片方法,还可以通过 split() 函数指定分隔符(不指定则默认为空白符,包括空格、Tab 制表符、回车换行符)对字符串进行分割。

【例3-8】

使用split进行的示例如下,在shell模式下编写如下程序。

  • 第1行:创建一个字符串strl并赋值。
  • 第2行:使用split数对字符str空白符为分隔符进行分割,并把分割后的结果赋值都单变量str2。
  • 第3~4行:变量str2,看分后的结果为一个列表。
  • 第5~8行:以逗号“,”为分割符对字符串进行分割。

(4) f-string

f-string 是一种格式化字符串,它的作用是将变量的值按照需要填充到一个字符串的内部。f-string 的语法很简单,在字符串的引号前加上字母 f,然后在需要填充变量的位置加上大括号 { 变量名 } 即可。

【例3-9】

f-string格式化字符串示例如下,在shell模式下编写如下程序。

  • 第1~2行:创建2个变量并赋值。
  • 第3行:通过f-string将变量填充到字符串中,并赋值给新变量。
  • 第4~5行:查看填充后的字符串内容。
1. >>> name = "Crossin"
2. >>> age = 18
3.>>> s =f"我叫{name},今年{age}岁"
4.>>> s
5.'我叫Crossin,今年18岁'

(5)字符串遍历

字符串的遍历就是依次对字符串中的每个字符进行操作访问,也就是把字符串中的每一个字符都单独取出一次。

【例3-10】

下面演示对字符串的遍历操作,在 shell 模式下编写如下程序。

  • 第1行:创建一个字符串s,并赋值“abc123”。
  • 第2~3行:使用for循环语句遍历字符串s,在循环语句下使用print函数输出变量i的值(第3行开头应缩进)。
  • 第4~9行:程序输出的遍历结果,可以看到字符串s中的字符被依次输出。
1.>>> s = "abc123"
2.>>> for i in s:
3.... print(i)  
4. a
5. b
6. c
7.1
8.2
9.3

4.数据类型的相互转换

变量的类型由所赋值的数据类型决定。在某些情况下,可以通过相关函数对数据进行类型转换。

(1)int 函数

如果想把其他数据类型转换为整数,可以使用 int 函数。需要注意的是,如果原类型是字符串,只有纯数字的字符串才能转换为整数类型,带有字母和其他符号(包括小数点)的字符串不能转换为整数类型,否则程序会报错。

【例3-11】

把字符串数据转换为整数类型数据,在shell模式下编写如下程序。

第1-6行:通过int 函数把字符串“10”转换为整数10。

1.>>> d = “10"
2.>>> d1 = int(d)
3.>>> d1
4.10
5.>>> type(d1)    
6.<class 'int'>

【例3-12】

浮点数类型数据都可以被int函数转换为整数类型数据,但此转换并不是采用四舍五入的方式,而是直接把小数部分去除。

在shell模式下编写如下程序。

  • 第1~3行:通过int函数把浮点数2.23转换为整数2
  • 第4~6行:通过int函数把浮点数2.89转换为整数2  

【例3-13】

我们知道布尔类型数据只有两个值True 和False,那么把布尔类型数据转换为整数类型数据会获得什么结果呢?

在shell模式下编写如下程序

  • 第1~3 行:使用int 函数把布尔类型数据“False”转换为整数类型数据的结果是0。
  • 第4~6行:使用int函数把布尔类型数据“True”转换为整数类型数据的结果是1。
1.>>> d1= int(False)
2.>>> d1
3.0
4.>>> d2 = int(True)
5. >>> d2
6.1

(2)str 函数

把其他类型数据转换为整数类型数据可以使用 int 函数,而如果想把其他类型数据转换为字符串类型数据可以使用 str 函数。

【例3-14】

把其他类型数据转换为字符串类型数据,在 shell模式下编写如下程序。

  • 第1行:定义一个变量a,并赋值整数123456789。
  • 第2行:使用str函数把变量a的类型转换为字符串类型,并把转换后的结果赋值给变量al。
  • 第3~4行:查看变量al的值,可以看到多了一对引号,即把整数类型数据转换为了字符串类型数据。
  • 第5行:定义一个变量b,并赋值浮点数3.1415。
  • 第6行:使用str函数把变量b的类型转换为字符串类型,并把转换后的结果赋值给变量bl。
  • 第7~8行:查看变量b1的值,可以看到多了一对引号,即把浮点数类型数据转换为了字符串类型数据。

(3) bool 函数

如果想要把其他类型数据转换为布尔型数据,可以使用 bool 函数。

【例3-15】

把其他类型数据转换为布尔类型数据,在shell模式下编写如下程序。

  • 第1~3行:把整数2020转换为布尔类型数据的结果为 True。
  • 第4~6行:把整数0转换为布尔类型数据的结果为 False。
  • 第7~9行:把字符串“hello”转换为布尔类型数据的结果为 True。
  • 第10~12行:把空字符串转换为布尔类型数据的结果为 False。
  • 第13~15行:把浮点数 3.14转换为布尔类型数据的结果为 True。
  • 第16~18行:把浮点数0.0转换为布尔类型数据的结果为False。
1.>>> b= bool(2020)
2.>>> b
3.True
4.>>> b= bool(e)
5. >>> b
6.False
7. >>> b = bool("hello")
8. >>> b
9. True
10. >>> b = bool("")
11.>>> b
12.False
13.>>> b = bool(3.14)
14. >>> b
15. True
16.>>> b =bool(0.0)
17.>>> b18. False

通过上面的示例程序,可以发现无论将何种类型的数据转换为布尔类型数据,都只有 True 和False 两个值。

(4)float 函数

如果想要把其他类型数据转换为浮点类型数据可以使用 float 函数,同样需要注意的是不能把带字母和其他符号的字符串转换为浮点数。

【例3-16】

把其他类型数据转换为浮点数类型数据,在 shell模式下编写如下程序。

  • 第1~6行:把布尔类型数据“False”与“True”转换为浮点数类型数据,结果分别为0.0上1.0。
  • 第7~9行:把带小数点和数字的字符串“3.14”转换为浮点数类型数据的结果为3.14。
  • 第10~12行:把整数2020转换为浮点数类型数据的结果为2020.0。
  • 第13~15行:把纯数字的字符串“2020”转换为浮点数类型数据的结果为2020.0。
1. >>> f1 = float(False)
2.>>>f1
3.0.0
4. >>> f2 = float(True)
5.>>>f2
6.1.e
7.>>>f3=float("3.14")
8.>>>f3
9.3.14
10.>>> f4 = float(2020)
11.>>>f4
12. 2020.0
13.>>>f5 =float("2020")
14.>>>f5
15.2828.0

(5)eval 函数

Python 提供了许多内置函数,这些函数让 Python 更加便捷,而 eval 函数是其中之一。

eval函数可以把一个字符串表达式当作代码来执行,并返回表达式的值。在 shell模式下编写

rue如下程序。    

  • 第1行:定义一个变量x并赋值整数7。
  • 第2~3行:输出表达式“3*7”的值为21。
  • 第4~5行:输出表达式“2+2”的值为 4。
  • 第6~7行:输出表达式“8/4”的值为2.0。
1.>>>x=7
2. >>> eval("3 * x")
3.21
4. >>> eval("2 + 2")
5.4
6. >>> eval("8 / 4")
7.2.0

练习案例

输入英文文章,通过程序输出该英文文章的单词数。

可以用一个变量接收用户输入的字符串,然后使用 split 函数对该字符串进行分割,分割后的数据存放在列表中,使用 len() 方法可以得到列表中元素的个数,最后使用 print() 函数输出单词数。

string = input("请输入:")
list1 = string.split(" ")
num = len(list1)
print("这段文字共有:",num,"个单词")


创作不易,求关注,点赞,收藏,谢谢~    

 

目录
相关文章
|
1天前
|
机器学习/深度学习 存储 数据采集
【Python 机器学习专栏】PCA(主成分分析)在数据降维中的应用
【4月更文挑战第30天】本文探讨了主成分分析(PCA)在高维数据降维中的应用。PCA通过线性变换找到最大化方差的主成分,从而降低数据维度,简化存储和计算,同时去除噪声。文章介绍了PCA的基本原理、步骤,强调了PCA在数据降维、可视化和特征提取上的优势,并提供了Python实现示例。PCA广泛应用在图像压缩、机器学习和数据分析等领域,但降维后可能损失解释性,需注意选择合适主成分数量及数据预处理。
|
1天前
|
机器学习/深度学习 算法 数据可视化
Python用KNN(K-近邻)回归、分类、异常值检测预测房价、最优K值选取、误差评估可视化
Python用KNN(K-近邻)回归、分类、异常值检测预测房价、最优K值选取、误差评估可视化
|
1天前
|
vr&ar Python
Python自激励阈值自回归(SETAR)、ARMA、BDS检验、预测分析太阳黑子时间序列数据
Python自激励阈值自回归(SETAR)、ARMA、BDS检验、预测分析太阳黑子时间序列数据
|
1天前
|
机器学习/深度学习 算法 Python
【Python机器学习专栏】逻辑回归在分类问题中的应用
【4月更文挑战第30天】逻辑回归是用于二分类的统计方法,通过Sigmoid函数将线性输出映射到[0,1],以预测概率。优点包括易于理解、不需要线性关系、鲁棒且能输出概率。缺点是假设观测独立、易过拟合及需大样本量。在Python中,可使用`sklearn`的`LogisticRegression`实现模型。尽管有局限,但在适用场景下,逻辑回归是强大且有价值的分类工具。
|
1天前
|
Python
Python随机波动性SV模型:贝叶斯推断马尔可夫链蒙特卡洛MCMC分析英镑/美元汇率时间序列数据|数据分享
Python随机波动性SV模型:贝叶斯推断马尔可夫链蒙特卡洛MCMC分析英镑/美元汇率时间序列数据|数据分享
|
1天前
|
机器学习/深度学习 Python
【Python机器学习专栏】时间序列数据的特征工程
【4月更文挑战第30天】本文探讨了时间序列数据的特征工程,强调其在捕捉季节性、揭示趋势、处理异常值和提升模型性能中的重要性。介绍了滞后特征、移动窗口统计特征、时间戳特征、频域特征和波动率特征等方法,并提供了Python实现示例。通过有效特征工程,可提高时间序列分析的准确性和预测可靠性。
|
1天前
|
机器学习/深度学习 计算机视觉 Python
【Python 机器学习专栏】图像数据的特征提取与预处理
【4月更文挑战第30天】本文探讨了图像数据的特征提取与预处理在机器学习中的重要性。图像数据具有大容量、信息丰富和冗余性高的特点。特征提取涉及颜色、纹理和形状特征;预处理包括图像增强、去噪和分割。Python的OpenCV和Scikit-image库在处理这些任务时非常有用。常见的特征提取方法有统计、变换和基于模型的方法,而预处理应注意保持图像真实性、适应性调整及验证评估。有效的特征提取和预处理能提升模型性能,Python工具使其更高效。
|
1天前
|
机器学习/深度学习 自然语言处理 算法
【Python机器学习专栏】文本数据的特征提取与表示
【4月更文挑战第30天】本文探讨了文本特征提取与表示在机器学习和NLP中的重要性。介绍了词袋模型、TF-IDF和n-gram等特征提取方法,以及稀疏向量和词嵌入等表示方式。Python中可利用sklearn和gensim库实现这些技术。有效的特征提取与表示有助于将文本数据转化为可处理的数值形式,推动NLP和机器学习领域的进步。
|
1天前
|
机器学习/深度学习 数据采集 算法
【Python机器学习专栏】使用Scikit-learn进行数据编码
【4月更文挑战第30天】本文介绍了Python Scikit-learn库在机器学习数据预处理中的作用,尤其是数据编码。数据编码将原始数据转化为算法可理解的格式,包括标签编码(适用于有序分类变量)、独热编码(适用于无序分类变量)和文本编码(如词袋模型、TF-IDF)。Scikit-learn提供LabelEncoder和OneHotEncoder类实现这些编码。示例展示了如何对数据进行标签编码和独热编码,强调了正确选择编码方法的重要性。
|
1天前
|
机器学习/深度学习 数据采集 算法
【Python机器学习专栏】数据标准化与归一化技术
【4月更文挑战第30天】在机器学习中,数据预处理的两大关键步骤是标准化和归一化,旨在调整数据范围以优化算法性能。标准化将数据缩放到特定区间,如[-1, 1]或[0, 1],适合基于距离的算法,如KNN、SVM。归一化则将数据线性变换到[0, 1],保持相对关系。Python中可使用`sklearn.preprocessing`的`MinMaxScaler`和`StandardScaler`实现这两种操作。选择哪种方法取决于数据分布和算法需求。预处理能提升模型理解和性能,增强预测准确性和可靠性。