Python的基础数据类型

学习任何一门编程语言,在入门阶段要重点把握两个方面,一是学习基础变量类型的种类和使用;二是学习基本的语法,基本语法包括代码结构、循环、条件。在该部分,将首先介绍Python的基本数据类型,除基础数据类型外,Python还构建了相对更复杂的数据类型,如array、DataFrame等,这些较为复杂的数据类型,将在后续的库中进行详细介绍。

学习python的目标是能够使用python做出相应的模型支持业务或自动化某些数据工作。如果把这个过程比作建造一个机器,那python的基础数据类型就是建造机器所需要的材料,基本语法是改造材料的工具,两者缺一不可。所以不止是python,对于所有编程语言而言,学习相应的数据类型和基本语法都是最重要的部分。

在这一部分将介绍两部分的内容:变量和基础数据类型。由于介绍内容较多,所以先建立一个简单的知识框架:
图片说明

1 变量

在介绍基本数据类型前,需要先来了解下变量。大家最早接触变量应该是在数学上,比方说函数f(x),大家都知道对于给定的函数形式,f(x)会随着x的值变化而变化,在这里x就是变量。变量是一个指代,其数值可以发生改变。变量的优点是,可以便捷的替换值,而不用每次都去逐一修改。

python中定义变量的方法很简单,直接使用字母、数字和下划线即可实现命名,但是不可以数字开头。同时需要注意的是,变量名不可使用Python的保留关键字,所谓保留关键字就是Python已经将这些关键字内置有具体的作用,不能用于变量命名。Python的保留关键字有以下35个:

'False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'

变量赋值也很方便,在python中使用=进行赋值,==表示相等。比方说定义一个变量a,给其赋值1,在使用python的代码是

a = 1

图片说明

讲完变量的定义,那变量可以被赋哪些值呢?这就涉及到python中的变量类型。

2 基础数据类型

Python的数据类型可以分为两类,一是基础数据类型,二是加载库中的数据类型。基础数据类型也就是在Python中内置数据类型,包括:数字型、字符型、布尔型、列表、元组和字典。加载库中的数据类型包括:日期、数组(Numpy库)、序列(Pandas库)、数据框(Pandas库)等。由于Python有着非常丰富的库,所以数据类型也比较多,对于入门学习而言,掌握基础数据类型即可,当使用某些库中的某些数据类型时,借助帮助文档即可快速学习。加载库中的数据类型将在常用库中介绍,在这里主要介绍Python的基础数据类型。

Python的数据类型是弱数据类型,而C、Java等是强数据类型。弱数据类型在定义变量时不需要指明变量类型,且在使用过程中可以随时改变;强数据类型在定义变量时便要指定数据类型,并且仅能赋值相同类型的数据。举个例子来说明弱数据类型。

a = 1
print(a)
print(type(a))
a = 2.3
print(a)
print(type(a))
a = "abc"
print(a)
print(type(a))
a = [1,2,3]
print(a)
print(type(a))
a = (1,2,3)
print(a)
print(type(a))
a = {"chinese":"90"}
print(a)
print(type(a))

代码中的type(a)是查询a的数据类型,上述代码的运行结果如下:

1
<class 'int'>
2.3
<class 'float'>
abc
<class 'str'>
[1, 2, 3]
<class 'list'>
(1, 2, 3)
<class 'tuple'>
{'chinese': '90'}
<class 'dict'>

当赋值为1时,变量a的数据类型是整数;赋值是2.3,变量a的数据类型是浮点数;赋值是[1,2,3]时,变量a的数据类型是list列表;赋值是(1,2,3)时,变量a的数据类型是tuple元组;赋值是{'chinese': '90'}时,变量a的数据类型是dict字典。

2.1 数字型

对数字类型的介绍包括以下几个方面:

2.1.1 数字型的子类别

python的数字型有三种:整数型(int)、浮点数型(float)和复数型(complex)。三种类型也比较简单,分别用于标识整数、小数和复数。其中复数型有两种赋值方法,一种是通过m+nj的形式,m是实部,n是虚部(当n取1时,也不可省略);另一种是通过complex(m,n),m和n的含义同第一种。

a = 1
print(a)
print(type(a))
b = 2.2
print(b)
print(type(b))
c = 1+1j
print(c)
print(type(c))
d = complex(1,2)
print(d)
print(type(d))

输出结果如下:

1
<class 'int'>
2.2
<class 'float'>
(1+1j)
<class 'complex'>
(1+2j)
<class 'complex'>

2.1.2 数字型的运算

关于数字型的运算,可以分为对数字自身进行计算和数字之间的计算。
图片说明

  1. 对自身的进行运算,包括绝对值等函数。

    函数 含义 样例
    绝对值abs() 将数字转换为非负数 abs(-1) = 1
    四舍五入round(m,n) 对数据进行四舍五入,并保留n位小数 round(1.22,1) =1.2
    向下取整floor() 获得不大于指定数值的最大整数 math.floor(-1.1) = -2
    向上取整ceil() 获得不小于指定数值的最小整数 math.ceil(1.1) = 2
    e的n次幂exp(x) 表示e^x math.exp(2) = 7.38905609893065
    以e为底的x的对数log(x) 假设log(x) = y,则满足e^y = x math.log(math.e) = 1
    以10为底的x的对数log10(x) 与log(x)的区别是此时底数为10 math.log(100) = 2
    算数平方根函数sqrt(x) 表示获取x的算数平方根 math.sqrt(4) = 2
    π数字常量math.pi 圆周率π math.pi = 3.141592653589793
    e数字常量math.e 自然常数 math.e = 2.718281828459045

    需要注意的是python的round并不是严格的四舍五入,round(1.25,1) = 1.2,并不是1.3;但是round(1.35,1) = 1.4。

  2. 除对自身进行运算外,还可以对不同数字之间进行运算

    函数 含义
    四则运算+-*/ 实现数字之间的加减乘除
    取余 m%n 表示m/n的余数 9%2 = 1
    整除m//n 表示m/n的整数部分 9//2 = 4
    幂运算m**n或pow(m,n) 表示m^n 2**3 = 8
    最大值max(m,n) 表示取变量中的最大值
    最小值min(m,n)
    比较 == , != , < , <= , > , >= 进行数字之间大小的比较,==进行是否相等判断,!=进行不相等判断

    以上基本涵盖常用的数字的运算,需要注意的是,在这里的介绍中,使用了math库,python强大的地方在于各种方便使用的库,math库中集成了各种常用的数字计算函数。在使用python库时,使用import 库名称则可以加载库,在使用库中的函数时,使用库.函数名称即可。如使用math库中的向下取整函数,使用方法是math.ceil(1.32)。

2.2 字符串

2.2.1 字符串的定义

字符串是文本,在创建字符串时需要使用单引号('')或双引号("")括起来,单引号和双引号在使用上无区别。如果字符串中包含单引号,则使用双引号括起来表示这一字符串;如果字符串中包含双引号,则使用单引号括起来表示这一字符串;如果既有单引号,又有双引号,则使用转义符号"\"对字符串中的符号进行转义(转义就是消除符号的含义,只是单纯的展示)。

a = "abc'dd'ee"
b = 'abc"dd"ee'
c = 'abc\'dd\'ee'
d ="'abc\"dd\"ee'"
print(a)
print(b)
print(c)
print(d)

运行结果是

abc'dd'ee
abc"dd"ee
abc'dd'ee
'abc"dd"ee'

既然存在转义符,那哪些是具有特殊含义的符号呢?上面提到的单双引号,此外最常用的还有\n和\t,两者分别表示换行和缩进四个位置。

m = "ab\ncd"
n = "ab\tcd"
print(m)
print(n)

输出结果如下,其中前两行是print(m)的输出,后一行是print(n)的输出。

ab
cd
ab    cd

如果想让这两个字符进行正常实现,则有两种方法,一种是进行转义,也就是将\进行转义;另一种是添加r。

m = "ab\ncd"
m_new = "ab\\ncd"
n = "ab\tcd"
n_new = "ab\\tcd"
print(m)
print(r"ab\ncd")
print(m_new)
print(n)
print(r"ab\tcd")
print(n_new)

输出结果如下:

ab
cd
ab\ncd
ab\ncd
ab    cd
ab\tcd
ab\tcd

2.2.2 字符串的运算

字符串的运算,包括以下四个方面的基本运算,其中字符串的索引是相对负责而且重要的内容,必须学明白。
图片说明

  1. 字符串的索引

    首先来理解下索引这一概念,索引是位置的概念,字符串是有一个或多个字符构成的,字符之间是存在先后顺序的,有先后顺序后就有了位置,具体的位置数值就是索引。如字符串"abc",由三个字符构成,a在b前面,b在c前面,也就是位置确定好了,那具体是第几位,第几位就是索引。在python中,索引都是从0开始计数的,所以a的索引是0,b的索引是1,c的索引是2。在获取索引后,就可以获取字符串的子集,在python中使用[索引值]获得子集。索引值可以是单个的数值,也可以是一个区间。索引除可以为正值外,还可以是负值,负值的意思是倒着排,也就是从右往左的顺序。

    str1 = "abcdE"
    print(str1[0])
    print(str1[4])
    print(str1[-1])
    print(str1[0:4])

    输出结果如下

    a
    E
    E
    abcd

    str1[0]表示获取字符串排名第一位的字符,也就是a;str1[4]表示获取字符串排名第5位的字符,也就是E;str1[0:4]表示获取字符串由第1位到第4位的数据,也就是abcd,需要注意的是[0:4]是包含[0]但是并不包含[4]。

    上面的索引是选取连续子集,那如果不想选择连续子集,而是想获取分割的子集,就需要在索引中加入步长,也就是按照[start:/end:step]的方式去选择子集。

    print(str1[0:5:2])

    上述代码的含义是从0开始,每次隔一个选取字符,运行结果如下:

    acE

    选择的索引值就是0、2和4。[0:5:2]中的5在字符串中是没有对应字符的,所以在使用中如果选择直接字符串的最后,是可以直接省略掉end的索引的。也就是说使用print(str1[0::2])可以获取到相同的结果。既然从左到右可以实现字符串的选择,那从右到左也是可以的,只不过这时候步长设置为负值。

    print(str1[4::-2])

    运行结果是Eca。

  2. 字符串的属性

    字符串作为一个变量,其属性是长度,可以使用len()函数去计算字符串的长度。字符串的长度是指字符串包含的字符个数,其中空格也算作一个字符。

    print(len("a b c"))

    上述代码的运行结果是5,表示包含5个字符。

  3. 字符串的操作:拼接&重复

    字符串的拼接,python中有比较多的方法,先从最简单的开始入门,后续逐步拓展。字符串拼接的方法就是“+”,字符串是可以直接相加的,相加的背后就是字符串的拼接。

    str1 = "abc "
    str2 = "cde"
    print(str1 + str2)
    print(str2 + str1)

    上述代码的运行结果如下:

    abc cde
    cdeabc 

    字符串的除了拼接,还可能会出现需要重复的情况,字符串是可以直接使用*进行运算的,只不过*后面必须跟正整数。

    str3 = "abc"
    print(str3 * 2)

    运行结果如下:

    abcabc
  4. 字符/字符串与字符串之间的关系

    判断某一字符或字符串是否被包含在另外一个字符串中,则可以使用in和not in函数,该函数返回的结果是布尔类型。

    print("ab" in "abc")
    print("a" not in "abc")

    运行结果是

    True
    False

    除了in和not in,还有是否相等的判断,这就与数字中的运算是相同的,都是使用==和!=判断是否相等,返回结果是布尔类型。

    print("a" == "abc")
    print("a" != "abc")

    返回的结果是

    False
    True

2.3 布尔型

2.3.1 布尔型的定义

布尔型变量只有两个:True和False(注意仅首字母大写)。布尔类型本质上是int数据类型,但是由于布尔类型的特殊性,也可以将其作为单独的数据类型。

  print(True + 4)
  print(False + 6)

输出5和6。说明True就是1,False就是0。布尔型主要用于判断,表示语句产出的结果

  print(3>2)

结果自然是输出True。基于这种判断可以分条件执行不同的语句。

2.3.2 布尔型的运算

布尔类型最重要的运算是逻辑运算,也就是or(或) and(且)和not(非)。or运算中是只要存在一项真,则结果为真;and运算中只要存在一项假,则结果为假;not运算是转换运算结果,原本结果为真,使用not则变为假。在涉及逻辑运算时,建议写清楚括号,避免计算逻辑混乱。

  print(True and False)
  print(True or False)
  print(not False)
  print(not True)

输出结果如下:

  False
  True
  True
  False

2.4 列表

2.4.1 列表的定义

列表是python编程中使用非常方便的数据类型,列表可以看做一个容器,这个容器中可以放置各种变量类型。列表的定义比较方便,使用[ ]定义即可,容器内的各种变量,使用逗号分隔开。尽管列表内可以放置各种变量,但列表使用场景最多的情形还是变量是同一类型的变量。当列表中不包含元素时,此列表为空列表[]。

a = [1,2,3,"abc",True,[

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

数据分析入门技术篇

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务