二、Python的三种基本数据类型
系列目录导航:
章节名称 | 重要程度 |
---|---|
1、python语言基本元素 | ** |
2、基本数据类型 | *** |
3、程序控制结构 | ***** |
4、函数和代码的复用 | ***** |
5、组合数据类型 | ***** |
6、文件和数据格式化 | *** |
7、Python程序设计方法 | ** |
8、python计算生态 | *** |
本期重点:
• 三种数字类型及其表示、进制转换 | |
• 数字类型的运算:运算操作符、增强赋值操作符、运算函数 | |
• 字符串的表示、转义字符、格式控制 | |
• 字符串的索引和切片 | |
• 字符串的操作符、处理函数、处理方法 | |
• 真假无值的含义,比较运算和逻辑运算 | |
• 类型判断和类型转换函数 |
紧接上文,本节我们来讲解python的基本数据类型:
1、数字类型及其运算
1.1 整数类型
Python语言提供三种数据类型:整数类型、浮点数类型、复数类型整数类型
(python中的整数类型一般不限制取值范围,所以整型就不会像Java那样分byte、int、short、long,这个特点也在算法比赛中便于计算;其次浮点数也是一样的道理,不分float或double,
而Java中常见的字符类型和布尔类型则分别归于组合数据类型中应用,在第五节中我们将会提到)
一般认为没有取值范围限制,可用十进制、二进制、八进制、十六进制表示如果不是十进制,需要引导符号
进制 | 引导符号 |
十进制 | 无 |
二进制 | 0b或0B(第一个字符是数字0,下同) |
八进制 | 0o或0O(第二个字符是字母O) |
十六进制 | 0x或0X |
(这里我插一句,为什么进制前一个字符为数字是因为编译器在解析程序的时候,会通过第一个字符判断属性,用于区分变量名与数字及进制符间的区别,方便代码解析)
Python可以直接处理不同进制表示的数据,最后结果默认以十进制方式显示
bin()、oct()、hex()函数可将数转化为二进制、八进制、十六进制表示,以字符串形式返回(注意返回的类型,python中大多转换函数以字符串返回,如上文提到的input函数)
注意:科学计数法只对十进制有效,在十六进制中,科学计数法不起效,如:0x3e7
中e代表14,转为十进制时用3*16^2+14*16^1+7*16^0(16^0=1)
1.2 进制转换
(1)N进制转换为十进制
若一个数在N进制中表示为1234,则其十进制为1×N^4+2×N^2+3×N^1+4XN^0
例如:二进制数0B1010的十进制为1×2^3+0×2^2+1×2^1+0×2^0 =10
十六进制数0XAB的十进制为10 × 16^1+11×16^0= 171
注:十六进制的A~F分别表示十进制中的10~15
(2)十进制转换为N进制:除N取余倒序法
将目标数字除以N,记下余数,再将所得的商除以N,记下余数……直至商为零最后将所有余数倒着写出来即可
例如:十进制数13对应的二进制
算式 | 商 | 余数 |
13÷2 | 6 | 1 |
6=2 | 3 | 0 |
3÷2 | 1 | 1 |
1 ÷ 2 | 0 | 1 |
因此十进制数13对应的二进制是0b1101
1.3 浮点数类型
- 一般表示:用小数形式表示,必须有小数部分,可添“.0”补位
- 科学计数法表示:aeb或aEb表示a × 10”,其中b必须是整数,例如:1e2、3.3E-3
1.4 复数类型
a+bj表示复数,其中j为虚数单位,a和b都是浮点数注意:b为0或1时也不能省略
对于复数z,z.real和z.imag分别表示它的实部和虚部
函数complex(a, b)也可以得到复数a+bj
1.5 数字类型的运算
(1)数值运算操作符
符号 | 含义 |
+、-、*、/ | 加、减、乘、除 |
/ / | 整除,不大于商的最大整数 |
% | 模运算,取余数 |
** | 乘方 |
注:除法运算的结果是浮点型
例:假设×=2,则x*=5//2+5**2的结果为____
x = x*(5//2+5**2)=x*(2+25)=2*27=52
(2)增强赋值操作符:上述运算符可与赋值符号联用,形成增强赋值操作符
例如:x+=y 等价于x=x+y,其余类似
注意:运算符与赋值符号之间不能有空格
(3)数值运算函数
函数 | 含义 |
abs (x) | x的绝对值或复数的模 |
divmod(x,y) | x除以y的商和余数(以二元组形式输出) |
pow(x,y, [z]) | x的y次方(若有z则取除以z的余数) |
round (x, [d]) | 对x四舍五入,保留d为小数(默认保留整数) |
min(x1,x2,-) | 括号内变量的最小值 |
max(x1,x2,-) | 括号內变量的最大值 |
2、字符串类型及其操作
2.1 字符串的表示
- 单行字符串用单引号(')或双引号(")包围
- 多行字符串用三单引号(''')或三双引号(""")包围
python中没有单独的字符类型,默认为字符串的一部分
2.2 转义字符
在字符串中,反斜杠(\)加一个字符可以表示新的含义
类型 | 转义字符 | 含义 |
与特殊符号有关 | \\ | 反斜杠本身 |
\' | 单引号本身 | |
\" | 双引号本身 | |
与格式控制有关 | \n | 换行 |
\t | 制表符(Tab) |
2.3 索引
用于取出字符串中的某个字符,语法为
字符串[序号1] | ||
(1)正向递增序号:序号为非负数,则最左侧为0,向右依次递增 | ||
(2)反向递减序号:若序号为负数,则最右侧为-1,向左依次递减 | ||
例如:若s="abcdefg",则s[2]='c',s[-2]='f' |
2.4 切片
用于取出字符串中的一个子串
(1)字符串[N:M]( 左闭右开)
获取第N到第M个字符(不包含第M个字符)的子字符串要求N和M不能超范围,可以是正向递增序号,也可以是反向递减序号
N和M都可以省略,N省略则默认为0,M省略则默认到末尾
例如:若s=" abcdefg".
则s[2:-2]="cde"(注意不包括s[-2])
s [: -2]= "abcde"
s [2 :]="cdefg"
(2)字符串[N:M:K]
获取第N到第M个字符(不包含第M个字符)、以K为步长的子字符串例如:若s="abcdefg"
则s[2:-2:2]="ce"
s [: -2: 2]="ace"
s [2:: 2]= "ceg"
(3)反向获取
字符串[N:M:K]
K可以是负数,可以获得反向的字符串
此时N对应的字符应该在M后面,如果省略不写,N默认为末尾,M默认为起始例如:若s="abcdefg"
则s[-2:2:-2]="fd"
s [: 2: -2] ="ge"
s [-2:: -2] ="fdb"
s [:: -2] ="geca"
(4)反向应用
用s[::-1]可获得s的反向字符串
例如:若s="abcdefg"
Ns [:: -1]= "gfedcba"
2.5 格式控制
使用format()方法时,槽除了花括号{ }外,还可以包含格式控制信息,语法格式为{参数序号:格式控制标记},其中格式控制标记包括:
对显示格式的规范 | 对数据本值的规范 | |||||
: | 填充 | 对其 | 宽度 | , | .精度 | 类型 |
(1)填充:用于填充的字符
(2)对齐:<左对齐、>右对齐、^居中
(3)宽度:字符串总宽度
(4),:千位分隔符
(5).精度:小数最多位数或字符串最大长度
(6)类型
整数类型: b 进制、c对应Unicode、d十进制、o八进制、 x小写十六进制、 X大写十六进制浮点浮点数类型:e/E指数形式、f浮点数形式、%百分比形式
例如:保留两位小数:{:.2f};输出十六进制:{:x};
保留字符串前5位:{:.5};居中并用减号填充,总宽度为10:{:-^10}
2.6 操作符
操作符 | 用法 | 含义 |
+ | x+y | 将x、y两个字符串连接起来 |
* | n*x或x*n | 将字符串x重复n次 |
in | x in s | 判断x是否是s的子串 |
注:如果要连接字符串和数字,不能直接用+相连,而要先把用str()函数将数字转换为字符串再相连
2.7 处理函数
函数 | 含义 |
len (x) | 返回字符串x的长度 |
str (x) | 将任意类型的x转换为字符串 |
chr (x) | 返回Unicode 编码为x的字符 |
ord (x) | 返回字符x对应的Unicode编码 |
hex (x) | 以字符串形式返回整数x对应的十六进制表示 |
oct (x) | 以字符串形式返回整数x对应的八进制表示 |
bin (x) | 以字符串形式返回整数x对应的二进制表示 |
字符串的长度以Unicode字符作为计数基础,中英文字符、标点符号都算1个长度单位建议记住:'0'、'A'、'a'的Unicode编码为48、65、97
2.8 处理函数
方法 | 含义 |
str. lower () | 将str中的字母全部变为小写 |
str.upper () | 将str中的字母全部变为大写 |
str. count (s) | str中子串s出现的次数 |
str.split([sep]) | 将str用sep(默认为空格)进行分割,返回分割后列表 |
str.join (iter) | 在iter的每个元素之间插入str,连成一个字符串 |
str.replace (old,new) | 将str中所有old子串替换成new |
str. strip ([chars]) | 去掉str前后的chars字符(默认为空格) |
str.center(width[,fillchar]) | 将原字符串居中,并使用fillchar填充至长度width |
以上方法只是返回变换后的字符串,str本身不被修改如果想修改str本身,需要赋值,例如:str=str.lower()等(重点记几个,不用全记)
3、逻辑与比较运算
3.1 真假无值
True表示“真”,是与1相等的值;False表示“假”,是与0相等的值在进行比较运算时,所有非0数字都认为是True
注意:True和False的大小写
None也是Python的保留字,不对应任何数值,通常用来弥补程序的逻辑完整性要求
3.2 比较运算
比较运算符有:小于<、小于等于<=、大于>、大于等于>=、等于==、不等于!=
比较运算的结果是True或False
注意:留意等于==和不等于!=的写法,与赋值符号=的区别
(1)可以用于比较数值,但比较复数时只能使用等于和不等于
(2)可以用于比较字符串,从前到后依次比较Unicode编码值的大小
注意:不同数据类型也能进行比较,但结果一般没有意义
3.3 逻辑运算
逻辑运算符有:与and、或or、非not
优先级顺序是非、与、或,但建议加括号以免混乱
4、类型的判断与转换
4.1 类型判断函数
type(x)可返回x的类型,它可以作用于任何数据类型(即所有数字类型和字符串)
type (x)的返回值不是字符串,而是类似于<class 'int'>,<class 'str'>等
‹class 'float'>
例如:利用type(x)==type(y)可判断x和y的类型是否相同
例如:利用type (x)==type(123)可判断x是否为整型
4.2 类型转换
通过内置类型转换函数,可以显式地对类型进行转换
函数 | 功能 |
int(x) | 将浮点型或字符串型的x转换为整数 |
float (x) | 将整型或字符串型的x转换为浮点数 |
str(x) | 将数值型的x 转换为字符串 |
注意:Java中str的表达方式为String ,且为类
12月本文持续更新......