Python基础之四:Python3 基础数据类型
一、数据类型简介
我们人类作为高级生物,可以很容易区分数据类型,但是计算机不能,计算机虽然很强大,但从某种角度上看又很傻,除非你明确的告诉它,什么是数字,什么是字符串,否则它是分不清数据之间的区别的,因此,在每个编程语言里都会有一个叫数据类型的东西,其实就是对常用的各种数据类型进行了明确的划分,你想让计算机进行数值运算,你就传数字给它,你想让他处理文字,就传字符串类型给它。
二、Python3中的基础数据类型简介
Python3中的基础数据类型共6种,分别是:
1.Number(数字): int(整数)、float(浮点数)、bool(布尔值)、complex(复数)
2.String(字符串):用单引号 ’ 或双引号 " 括起来,同时使用反斜杠 \ 转义特殊字符
3.List(列表):写在方括号 [] 之间、用逗号分隔开
4.Tuple(元组):写在方括号 ()之间、用逗号分隔开
5.Set(集合):由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员,写在大括号{ }之间、用逗号分隔开
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典
6.Dictionary(字典):是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合
三、Python3中的基础数据类型详解
1.Number(数字)
Python3 支持 int、float、bool、complex(复数)
1.int(整数类型)
通常被称为是整型或整数,是正或负整数,不带小数点。Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 Python3 没有 Python2 的 Long 类型。
1.1 十进制数转换为二进制数
十进制整数转换为二进制整数:采用"除2取余,逆序排列"法。
具体做法是:
用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
# 将十进制数25转换成二进制数:
# 25/2=12---余数1
# 12/2=6---余数0
# 6/2=3---余数0
# 3/2=1---余数1
# 1/2=0---余数1
# 最终结果:10011
十进制小数转换为二进制小数:采用"乘2取整,顺序排列"法。
具体做法是:
用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,此时0或1为二进制的最后一位。或者达到所要求的精度为止;
然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。
#将十进制数0.625转换成二进制数:
#0.625*2=1.25======取出整数部分1
#0.25*2=0.5========取出整数部分0
#0.5*2=1==========取出整数部分1
#结果:(0.101)B
1.2 二进制数转换为十进制数
要从右到左用二进制的每个数去乘以2的相应次方,小数点后则是从左往右
例如:二进制数1101.01转化成十进制
1101.01(2)=1*2^0+0*2^1+1*2^2+1*2^3 +0*2^-1+1*2^-2=1+0+4+8+0+0.25=13.25(十进制数)
所以总结起来通用公式为:
abcd.efg(2)=d*2^0+c*2^1+b*2^2+a*2^3+e*2^-1+f*2^-2+g*2^-3(十进制数)
1.3 int操作
计算整数在内存中占用的二进制码的长度,使用bit_length()方法:
# 将十进制数25转换成二进制数:
# 25/2=12---余数1
# 12/2=6---余数0
# 6/2=3---余数0
# 3/2=1---余数1
# 1/2=0---余数1
# 最终结果:10011
m = 25
print(m.bit_length())
#运行结果:5
2.bool(布尔类型)
布尔值只有两个:True(1)、False(0)
2.1 int str bool 三者数据类型之间的转换
str => int int(str)
int => str str(int)
int => bool bool(int) 0是 False, 非0 就是 True
str = > bool bool(str) 空字符串 就是 False , 非空就是 True
bool => str str(bool) 把 bool 值转换成相对应的 “值”
# int ---> bool
i = 100
print(bool(i)) # True # 非零即True(1)
i1 = 0
print(bool(i1)) # False 零即False(0)
# bool ---> int
t = True
print(int(t)) # 1 True --> 1
t = False
print(int(t)) # 0 False --> 0
# int ---> str
i1 = 100
print(str(i1)) # '100'
# str ---> int # 全部由数字组成的字符串才可以转化成数字
s1 = '90'
print(int(s1)) # 90
# str ---> bool
s1 = '晴朗'
s2 = ''
print(bool(s1)) # True 非空即True
print(bool(s2)) # False
# bool ---> str
t1 = True
print(str(True)) # 'True'
3.float(浮点数类型)
浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250)
m = 55.7
print(float(m))#55.5
print(int(m))#55
4.complex(复数)
复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。
5.数字类型转换
int(x) 将x转换为一个整数。
float(x) 将x转换到一个浮点数。
complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。
complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。
5.数字相关函数
5.1 数学函数
import math
print(abs(-10)) #返回数字的绝对值,结果:10
print(math.ceil(3.2)) #返回数字的上入整数,结果:4
print(math.exp(1)) #返回e的x次幂(ex),结果:2.718281828459045
print(math.fabs(-10)) #返回数字的绝对值,结果:10.0
print(math.floor(4.9)) #返回数字的下舍整数,结果:4
print(math.log(100, 10))# log函数,结果:2.0
print(math.log10(100))# 返回以10为基数的x的对数,结果: 2.0
print(max(1,5,3,6,4,8)) #返回给定参数的最大值,结果:8。
print(min(1,5,3,6,4,8)) #返回给定参数的最小值,结果:1。
print(math.modf(3.88)) #返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。,结果:(0.8799999999999999, 3.0)
print(pow(2, 4)) #x**y 运算后的值,即x的y次幂。结果:16
print(round(10.8765,2))#返回浮点数 x 的四舍五入值,如给出n值,则代表舍入到小数点后的位数。其实准确的说是保留值将保留到离上一位更近的一端。结果:10.88
print(math.sqrt(16)) #返回数字x的平方根。结果:4.0
5.2 随机数函数
import random
print(random.choice(range(10)))#从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。
print(random.randrange(1, 100, 2))#从指定范围内,按指定基数递增的集合中获取一个随机数。1-100随机一个奇数
print(random.random()) #随机生成下一个实数,它在[0,1)范围内。
random.seed(10) #改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。
print(random.shuffle([])) #将序列的所有元素随机排序
print(random.uniform(0, 10)) #随机生成下一个实数,它在[0,10]范围内。
5.3三角函数
# acos(x) 返回x的反余弦弧度值。
# asin(x) 返回x的反正弦弧度值。
# atan(x) 返回x的反正切弧度值。
# atan2(y, x) 返回给定的 X 及 Y 坐标值的反正切值。
# cos(x) 返回x的弧度的余弦值。
# hypot(x, y) 返回欧几里德范数 sqrt(x*x + y*y)。
# sin(x) 返回的x弧度的正弦值。
# tan(x) 返回x弧度的正切值。
# degrees(x) 将弧度转换为角度,如degrees(math.pi/2) , 返回90.0
# radians(x) 将角度转换为弧度
5.3数字常量
pi 数学常量 pi(圆周率,一般以π来表示)
e 数学常量 e,e即自然常数(自然常数)
2.String(字符串)
凡是用引号引起来的数据可以称为字符串类型,组成字符串的每个元素称之为字符,将这些字符一个一个连接起来,然后在用引号起来就是字符串。
2.1 字符串的索引与切片
索引:即下标,就是字符串组成的元素从第一个开始,初始索引为0以此类推
st = 'ABCDEFG'
print(st[0])#A
print(st[2])#C
print(st[6])#G
切片:就是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串(原则就是顾头不顾腚)
2.2 字符串的访问
按索引:s1[index]
按照切片: s1[start_index: end_index+1]
按照切片步长: s1[start_index: end_index+1:2]
反向按照切片步长: s1[start_index: end_index后延一位:2]
st = 'ABCDEFG'
print(st[0:6:2])#ACE,A到F范围内(不包括F),每隔2取一个值
print(st[0:6:3])#AD,A到F范围内(不包括F),每隔3取一个值
print(st[:7])#ABCDEFG,A到G范围内(包括G),每隔1取一个值
print(st[-2:1:-1])#FEDC,F到B范围内(不包括B),每隔-1取一个值
print(st[-3:0:-2])