python 数据类型、进制转换
存储单位
-
最小单位是bit,表示二进制的0或1,一般写作b
-
最小的存储单位是字节,用byte表示,1b = 8b
-
1024b = 1kb
-
1024kb = 1mb
-
1024mb = 1gb
-
1024gb = 1tb
-
1024tb = 1pb
-
2^32 = 2^10 * 2^10 * 2^10 * 2^2 = 4gb
进制转换
-
十进制:
-
基数为0~9,逢10进1
-
示例:123 = 1 * 10^2 + 2 * 10^1 + 3*10^0 = 100 + 20 + 3 = 123
-
-
二进制:
-
基础0和1,逢2进1,python中使用'0b'表示
-
示例:0b110100 = 2^5 + 2^4 + 2^2 = 32 + 16 + 4 = 52
-
十进制转二进制:除2取余,倒序书写
-
22 = 0b10110
-
-
-
八进制:
-
基数0~7,逢8进1,python中使用'0o'表示
-
示例:0o123 = 1 * 8^2 + 2 * 8^1 + 3 * 8^0 = 64 + 16 + 3 = 83
-
八进制转二进制:八进制的1位表示3位二进制数
-
0o123 = 0b001 010 011
-
-
-
十六进制:
-
基数0~9、a~f,逢16进1,python中使用'0x'表示
-
示例:0xab = 10 * 16^1 + 11 * 16^0 = 160 + 11 = 171
-
十六进制转二进制:十六进制1位表示4位二进制数
-
0xabc = 0b1010 1011 1100
-
-
-
计算机中的数据,是以哪种进制存储的?为什么?
-
二进制,因为计算机设计时只识别二进制。具体原因如下:
-
稳定性高(0和1)、成本低(技术上易实现)、与生活中的真假逻辑相吻合(易于解决实际问题)
-
-
计算机中的数据如何存储?
-
如何存储负数?
-
最高位作为符号位:0表示正数,1表示负数
-
虽然牺牲了最高位,但是可以解决负数存储问题,进而简化了硬件设计成本
-
-
原码反码和补码
-
正数的三码一致,只有负数才有反码和补码
-
负数的反码等与原码符号位不变,其余位取反
-
负数的补码等于反码加1
-
计算机中的数据都是以补码存储的
-
-
数据类型
-
不同的数据类型都是为了解决实际问题而出现,就是为了进行各种运算而存在
-
python中常用数据类型:整型、浮点、布尔、字符串、列表、元组、字典、集合、空等
-
整型(int):就是数学中的整数
-
浮点(float):就是数学中的小数
pi = 3.14 print(pi) print(type(pi)) # 科学计数法 b = 3.14e-3 print(b)
-
复数(complex):了解
c = 3 + 5j print(type(c))
-
布尔(bool):只有true/false两个值,对应于生活中的真假
-
空(nonetype):只有一个值none
-
字符串(str):使用引号括起来的一串字符
-
可以使用单引号双引号或者三引号定义
-
转义:就是时特定的字符失去原有的意义,使用'\'进行转义
-
单引号中的单引号,双引号中的双引号
-
很多时候'\'也需要转义
-
特殊:'\n'表示换行,'\t'表示制表
-
-
-
列表(list):通过[]进行定义,可以存储一系列的任意数据,可以添加删除元素
-
示例
lt = [1, 3.14, 'hello'] print(lt) print(type(lt)) # 提取元素,下表从0开始,存在越界问题 print(lt[0])
-
-
元组(tuple):通过()进行定义,可以存储一系列的任意数据,不可以添加删除元素
-
示例
tp = ('小芳', '小敏', '小杜') print(tp) print(type(tp)) print(tp[0]) # 定义单个元素的元组时需要添加一个',' tp2 = (123,) print(type(tp2))
-
-
集合(set),使用{}进行定义,可以存贮一系列的任意数据,集合中的数据不能重复
-
示例
s = {'李白', '辛弃疾', '苏东坡', '欧阳修', '李白', '杜甫'} s2 = {'李白', '宋晓峰', '杜甫'} print(s) print(type(s)) # 交集 print(s & s2) # 并集 print(s | s2) # 差集 print(s - s2) print(s2 - s) # 定义空集合,不能使用{},这是留给定义空字典使用的 # s3 = {} s3 = set() print(type(s3))
-
-
字典(dict),使用{}进行定义
-
元素是由键值对组成
-
键和值之间使用':'连接
-
字典中的键时唯一的,值可以是任意的
-
字典中的元素可以添加和删除
-
示例:
-
xiaoming = {'name': '小明', 'age': 20} print(xiaoming) print(type(xiaoming)) # 根据键提取值 print(xiaoming['name']) # 根据不存在的键获取值时会报keyerror错 # print(xiaoming['height']) # 等价于xiaoming['name'],但是当键不存在时不报错,返回none print(xiaoming.get('height')) # 统计元素个数 # 字典表示键值对个数 print(len(xiaoming)) # 列表表示元素个数 print(len(lt)) # 字符串表示字符个数 print(len('你好'))
类型转换
-
隐式类型转换:运算、条件判断等
-
强制类型转换:使用专门的函数就行类型转换
int:转换为整型,可以通过base参数指示带转换数据的格式 float:转换为浮点数 str:转换为字符串 list:转换为列表,参数必须是可迭代对象(str、tuple、set、dict) tuple:转换为元组,使用方法同上 set:转换为集合,使用方法同上 dict:转换为字典,参数的内容必须是成对出现的
获取变量地址
-
函数:id
-
示例:
a = 10 print(id(a)) # 通过id可以获取变量的地址 # a = 20 # print(id(a)) b = 10 print(id(b))
-
说明:了解,不要深究