Python数据类型串讲(上)

CDA数据分析师 出品

1、什么是数据

学习一门新的编程语言,掌握其语法的底层是我们第一步要做的事。编程的底层也就是我们常说的基础,下面将从python的基础中的数据类型开始入门。

何为数据?在计算机科学中,数据是指所有能输入到计算机并被计算机程序处理的符号的介质的总称,是用于输入电子计算机进行处理,具有一定意义的数字字母、符号和模拟量等的统称。

2、数据类型的作用

python的标准数据类型共有六种,为什么要将数据分为不同的类型呢?像我们日常生活中的事物,可以分为固态、液态、气态等,python语言中的数据也有其对应的"状态",且要求更加严格,不同的状态用不同类型的数据去表示,不允许存在语法歧义。

数据结构的意义:将上述五大数据类型整合到一起。但是掺到一起不是目的。目的是能够组合成一个好的结构,方便自己或者他人进行数据存储或者读取。

3、数据类型串讲

python的数据类型根据其结构划分为两类:原子类型和结构类型。

原子类型是python中最简单的一种数据类型,或者说是python中最原始的数据类型,仅包含一种值的集合:数字型或字符串型;结构类型则是包含多种值,结构较复杂的集合。python中常见的结构类型可以统称为"容器",序列(如列表和元组)、映射(如字典)以及集合(set)是三类主要的容器。下面将逐一进行介绍。

3.1 数字型

在python中,数字类型的使用一点也不罕见,主要运用在数字之间的运算、大小的比较、条件判断等等。数字类型包括:整型(int)、浮点型(float)、复数型(complex)、布尔型(bool)。其中布尔型属于特殊的数字类型。

3.1.1 整型( int)

在python中,用int(即integer)表示整型,其包含正整型和负整型。相比于其他语言的整数的取值范围由机器位数(32位或64位)决定,python整数的取值范围,仅与机器支持的内存大小有关,也就是说Pyhton可以表示很大的数,可以超过机器位数所能表示的数值范围。python3中整型的长度,理论上可以说是不受限制(受计算机内存的限制,不是真正的无限大,但其长度足以供我们的日常使用)。

x = 3#用type函数查看变量的类型type(x)

以上代码执行结果为:

3.1.2 浮点型(float)

python的浮点型可以理解为我们数学上学的小数,带有小数点的就是浮点型。浮点型有两种表现形式,第一种是带小数点的一般形式,第二种是科学计数法,当数值特别小或者特别大时,python会自动将其转化为科学计数法的形式,如:2.5e² = 2.5 x 10² = 250。

x = 300000000000000000000.5xtype(x)y = 0.000000000000000000025ytype(y)

以上代码执行结果为:

)

python中浮点型的默认精度为小数点后16位,小数点越往后越不精确,因为在转化为二进制时会出现无限循环,导致约省出现偏差。

3.1.3 复数型 (complex)

python的复数与我们数学上学的复数一样,由两部分组成:实数部分和虚数部分,表现形式为:a+bj, a是实数部分,b是虚数部分,j是虚数单位(-1的平方根)。复数一般应用在工程领域。

#直接指定a,b创建x = 2 + 3jx#通过complex函数传入参数a,b创建y=complex(2,3)y#获取实数部分y.real#获取虚数部分y.imag

以上代码执行结果为:

3.1.4 布尔型 bool

布尔型是python数字类型的一种特殊类型,因为布尔型并没有用常规的数字表示,而是通过"False"对应0和"True"对应1来表示。在python2中没有定义布尔型,用0表示"False",1表示"True",而在python3 ,把"False"和"True"定义为python的关键字,若输入的数据非空或该表达式成立,则为"True";若输入的数据为空、数字0、None或该表达式不成立,则为"False",同时还可以对布尔型进行运算。

bool(3)bool(2<3)bool(0)bool(2>3)

以上代码执行后结果为:

3.1.5 数据运算

假设x=20,y=10,Python支持以下类型的运算符:

· 算术运算符

· 运算优先级:幂运算>乘除>加减

· 比较(关系)运算符

· 赋值运算符

· 逻辑运算符

· 运算顺序:not>and>or

· 成员运算符

· 身份运算符

3.2 字符串

字符串类型在python中的使用非常常见,可以理解为我们常说的"文本数据",例如"hello world"就是字符串。python中不存在char类型,也就是说在python中一个字符构成的数据也是字符串。

3.2.1 字符串的声明

在python3中,字符串类型的数据有多种声明方法:单引号(’ ‘)、双引号(" ")、三个单引号(’’’ ‘’’)、三个双引号(""" “”"),这四种声明方法作用都一样,但是要注意前后一致,即字符串前面用单引号,字符串后面也要用单引号,若用其他声明方式如双引号会报错。

#定义变量x_0=‘abc’x_1="abc"x_2=’’‘abc’’'x_3=""“abc”""#查看变量类型type(x_0)type(x_1)type(x_2)type(x_3)

以上代码执行的结果为:

若字符串本身含单引号或双引号,可使用转义字符""去使引号失去声明字符串的功能,而作为普通的字符输出。

#使用转义字符print(‘Let’s go’)

以上代码执行结果为:

3.2.2 字符串的编码

python3的字符串默认以unicode格式编码,如果需要以其他格式如"utf-8"进行编码,可通过函数encode()指定编码格式;如果导入文件为其他编码格式如"utf-8",在读取文件时可通过添加参数encoding=‘utf8’,说明该文件的编码格式,否则字符串会出现乱码的情况。(查看文件编码格式)

#参数encoding指定读取文件的编码格式data=open(“D:\python\data.txt”,“r”,encoding=“utf8”)

小技巧:

· 在python文件头可作编码格式声明如下:#-- coding: utf-8 --,避免在与其他语言交互时,不清楚编码格式而出现乱码;

· 读取文件时可先通过txt文件查看编码格式,步骤如下:

· 步骤一:

· 步骤二:

3.2.3 字符串的格式化

在使用字符串输出的过程中,我们往往会希望输出的字符串中某些指定位置的字符,是由已定义的变量或表达式的值根据设定的格式转换而来。如我们经常受到的信息:“尊敬的XXX客户,截止至XXX,您的基本账号余额已低于X元,为避免停机,请尽快充值”,其中X的内容是由指定的值以某种格式展现。

这就是字符串的格式化输出,python3中实现字符串的格式化有两种方式:占位符"%"和format函数。第二种方式是新版的python中新增的,也是官方推荐使用的,但是目前为止,大部分python使用者还是保持使用第一种的习惯,因此,建议大家两种格式化的方式都掌握。

3.2.3.1 '%'占位符

使用格式:格式化字符串 % 要输出的值组

print(‘尊敬的%s客户,截止至%s,您的基本账号余额已低于%d元,为避免停机,请尽快充值’%(‘王小二’,‘2019年10月22日’,10))

其中,格式化字符串中的’’%s’为转换说明符,指出值得插入位置,'s’代表将值转换为字符串类型输出,其他常用的转换说明符有:%d、%f ,分别代表转换为十进制整数型和浮点型。

同时,可添加其他符号组合使用作为格式化辅助操作符,如可使用"%5s"同时指定转换后的字符串最小宽度为5,若字符串长度小于5,会自动在字符串前用空格补齐(python默认右对齐)。

#字符宽度小于设定宽度,自动在字符前以空格填充print(’%5s’%‘王小二’)print(’%s’%‘王小二’)

3.2.3.2 format函数

’格式化字符串’ .format(要输出的值组)

format()中格式字符串中的占位符{}与要输出的值组中参数的位置匹配有三种格式:

· 按默认从左往右顺序匹配

· print(‘客户{}的账户余额是{}元’.format(‘王小二’,8))

· 按数字编号指定位置匹配

· print(‘客户{0}的账户余额是{1}元’.format(‘王小二’,8))#可调换顺序print(‘客户{1}的账户余额是{0}元’.format(8,‘王小二’))

· 按关键字指定位置匹配

· print(‘客户{name}的账户余额是{money}元’.format(name=‘王小二’,money=8))#可调用顺序print(‘客户{name}的账户余额是{money}.元’.format(money=8,name=‘王小二’))

和"%"的格式化输出一样,format函数也可以对输出的字符串设置格式,格式如下:

{:[填充] [对齐] [标记] [#] [0] [宽度] [,] [.精度] [类型]}

常用格式化:

#设置浮点型的精度如:保留两位有效数字’{:.2f}’.format(3.1415926) #金额的千位分隔符’{:,}’.format(1234567890)#填充与对齐’{:>5}’.format(‘88’)"{:*<5}".format(‘88’)

3.2.4 字符串的常用函数

python内置的字符串处理相关的函数非常多,下面只列举了日常所用的一些字符串函数。

#定义字符串变量x=‘Stay hungry,Stay foolish’#输出字符串print(x)#查看字符串长度len(x)

以上代码执行结果为:

3.2.4.1 字母处理

· 将字母转换为大写:x.upper()

· 将字母转换为小写:x.lower()

· 大小写字母互换:x.swapcase()

· 字符串首字母大写:x.capitalize()

· 字符串首单词大写:x.title()

x.upper()x.lower()x.swapcase()x.capitalize()x.title()

以上代码执行结果为:

3.2.4.2 拆分与合并

· 拆分

· split(): 将字符串按指定分隔符及分隔次数拆分

· 语法:x.split(‘分隔符’,分隔次数)

· partition():将字符串按指定分隔符拆分为分隔符前、分隔符、分隔符后三部分

· 语法:x.partition(‘分隔符’)

· x.split(‘S’,2)x.partition(’,’)

· 以上代码执行结果为:

· 注意:plit()和partition()默认从左往右顺序拆分,如果想从右往左拆分,在函数名前加’r’即可。

· 合并

· join():将字符串中各字符以指定字符连接

· 语法:‘连接符’.join(x)

· #以空格将x的每个字符连接起来’ '.join(x)

· 以上代码执行结果为:

3.2.4.3 查找指定字符串

· count():返回查找到指定字符串的次数

· 语法:x.count(‘查找字符串’,[查找起始位置],[查找结束位置])

· find():查找指定字符串并返回其位置,若查找不到返回’-1’

· 语法:x.find(‘查找字符串’,[查找起始位置],[查找结束位置])

· index():查找指定字符串并返回其位置,若查到不到报错提醒

· 语法:x.index(‘需查找的字符串’,[查找起始位置],[查找结束位置])

· #注意python是区分大小写的x.count(‘Stay’,0,24)x.count(‘Stay’,0,12)x.find(‘foolish’)x.find(‘Foolish’) x.index(‘foolish’)x.index(‘Foolish’)

· 以上代码执行结果为:

·

3.2.4.4 替换指定字符串

· replace():将字符串中指定字符替换为新的字符

· 语法:x.replace(‘旧字符’,‘新字符’,[最大替换次数])

· x.replace(‘foolish’,‘FOOLISH’,1)

· 以上代码执行结果为:

·

· 注意:如需删除字符串中指定字符,使用replace()将指定字符替换为空字符即可。

3.2.4.5 删除前后指定字符

· strip():删除字符串前后指定的字符或字符序列(默认为空白符:/n,/r,/t,’ '),并返回删除后的值

· 语法:x.strip([‘需删除的字符/字符序列’])

· #删除字符串前后的空格x=’ Stay hungry,Stay foolish ‘x.strip()#删除字符串前后指定的字符’#‘y=’-Stay-hungry,Stay-foolish-‘y.strip(’-’)

· 以上代码执行的结果为:

· 注意:strip()仅对字符串前后进行操作,上例字符串y中间部分的字符’#'并未删除;且删除字符串序列时不考虑字符顺序,即只要有字符串序列里的字符便删除。

3.2.4.6 元素判断

· x.startswith(‘str’):判断字符串是否以’str’开头

· x.endswith(‘str’):判断字符串是否以’str’结尾

· x.isalnum():判断字符串是否全为字母或数字

· x.isalpha():判断字符串是否全为字母

· x.isdigit():判断字符串是否全为数字

· x.islower():判断字符串是否全为小写字母

· x.isupper():判断字符串是否全为大写字母

发布了2708 篇原创文章 · 获赞 267 · 访问量 55万+

猜你喜欢

转载自blog.csdn.net/yoggieCDA/article/details/105079491