python 六大数据类型
Number数据类型(int整型 float浮点型 bool布尔型 complex复数类型)
(1)int 整型 (正整形 0 负整型)
'''var 指代一个变量'''
type 用来获取变量的类型
id 用来获取变量所指向那个值的地址
三种进制表达最后的结果 均为 int整形类的数据 属于十进制的结果
(2)float 浮点型即小数
它有两种表达形式:
(3)bool 布尔型 (True 真 False假)
(4)complex 复数类型
复数:实数 + 虚数 两部分构成的
complex(实数,虚数) 注意:这种表达方式虚数不能加j 即(5,2) 非 (5,2j) 否则会错
例:5 + 6j 5 就是实数 6j 就是虚数
j 若有一个数,它的平方等于-1,那么这个数就是j,科学家认为有,复数代表的是高精度类型.
表达方式一:
complexvar = 5 + 6j
complexvar = 3 - 2j
print(type(complexvar))
print(id(complexvar))
表达方式二: complex(实数,虚数)
res = complex(14,2)
print(res) => (14,2)
容器数据类型(str 字符串型 list 列表型 tuple 元组型 set集合型 dict字典型)
(1)str 字符串型
'''用引号引起来的就是字符串,三种引号:单引号 双引号 三引号'''
转义字符:\ (1) 把有意义的字符转变为无意义的字符
(2) 把无意义的字符转变的有意义
\n 或者 \r\n : 代表"换行"意思
\t : 代表"一个缩进"意思
\r : 代表将\r后面得所有字符拉到该行首
三种引号表达的字符串:
# 单引号表达字符串
# 双引号表达字符串
# 这两种情况较为特殊,如果外面是双引号,里面就要单引号,反之一样
# 非要使用双引号,使用 \ 进行转义
# 三引号表达字符串 (支持跨行)
# 元字符串 r"123"
'''元字符串可以让转义字符失效'''
# 字符串的格式化
"%d %f %s" 语法 : "字符串" % (实际值)
%d 占位符 d代表整型数据
结果:何健翰买了3个充气娃娃
%f 占位符 f代表浮点型数据 默认保留6位小数点,f前面有数值,则根据数值是多少保留对应小数点
%s 占位符 代表字符串
(2)list 列表型
'''特征:可以获取和修改数据,排列有序'''
# 列表值的获取方法如下解释:
# 正向下标 从0开始代表第一个数值 1代表第二个数值 往后以此类推
# 反向下标 从-1开始代表最后一个值 -2代表倒数第二个值 往前以此类推
# 若是不知道列表的长度 想要快速获取最后一个值的下标 怎么办?
# 用 len 来获取列表的长度
# listvar = ["傻逼",3,3.14,True,False,2-2j,"傻逼",3,3.14,True,False,2-2j]
# res = len(listvar)
# res2 = len(listvar)-1
# print(res2)
# print(listvar[res2])
列表的修改
(3)tuple 元组型
''' 特征:可以获取但不能修改数据,排列有序'''
'''
# tuplevar = () 这是一个空元祖
# tuplevar = (1) 这是一个整型
# tuplevar = (1,) 这是一个元祖
# 综上所述 : 判断tuplevar = (?)或tuplevar = (?,)这两种是不是元组,
取决于里面值是否有逗号,有 就是元组 没有就是别的数据类型
空元祖可以使用()来表示
'''
# 获取元组中的数据 : 跟列表list的取值一模一样 (正向下标,反向下标)
# 修改元组中的值,不可以修改,会进行报错
(4)str 字符串
strvar = ""
# 特征:可以获取,但不可以修改,有序排列
# 获取字符串中的数据:跟列表list 元组tuple的取值一模一样(正向下标,反向下标)
# 修改字符串当中的值,不可修改,会进行报错
(5)set 集合型
setvar = {} 数据类型显示是一个dict 字典
setvar = set() 强制转换成一个空集合的数据类型(只有这一种类型)
# 特征:不可获取,也不可以修改,无序排列,自动去掉重复数据
# 获取集合当中的数据:不能获取,会进行报错
# 修改集合当中的数据:不可修改,会进行报错
(6)dict 字典
dictvar = {}
# 冒号左边是键,右边是值,键值对之间用逗号隔开
# 特征 : 可以获取,可以修改,无序排列(python3.6版本看似有序、实则无序
# 底层,使用了哈希算法,储存的数据是散列)(3.5版本无序),键值对储存的数据
# 获取字典当中的数据:可以获取,直接输入冒号左边的键即可取值的数据
# 修改字典当中的数据:可以修改,直接将要改的值替换掉 键 就可实现修改
# 一般在命名字典的键时,推荐使用字符串,按照变量命名的字符串.
# 哈希算法
'''
定义;把不可变的任意长度值计算成固定长度的唯一值,这个值可正可负,可大可小
但长度固定,该算法叫哈希算法,这个固定长度值叫哈希值
特点: 哈洗过的数据储存时,是一个随机存放的散列,并不是按照次序依次存放的,
所以通过哈希算法储存数据的速度较快
查找: 字典的键就是按照哈希算法算出来的,可以通过该键找散列中的对应值,形成
映射关系,所以集合,字典在本质上都是无序的
版本:3.6版本之前都无序
3.6版本之后把字典的字面顺序记录下来,当从内存拿数据的时候,根据字面
顺序重新排列,所以看起来有序,但本质上无序
'''
"可哈希数据: (不可变的数据) Number (int float bool complex)" str tuple"
"不可哈希的数据 (可变的数据) list set dict"
# 自动类型转换( 针对于Number数据类型来说的 )
# 规律: 精度从低到高 bool -> int -> float -> complex
# 当两个不同的数据类型运算时,默认向更高精度转化
# True 转化成整型是 1 False 转化成整型是 0
# int + float 类型较特殊,最终值会保留小数点后15~18位,因为float在本质上存在精度损耗,
因为小数的二进制在内存中是无限循环没有终止,一般截取15~18位