数据类型
Posted wsdr95-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据类型相关的知识,希望对你有一定的参考价值。
存储单位
- 最小的单位是bit,表示一位二进制的0或1,一般写作‘b‘,是网络数据传输的单位
- 最小的存储单位是字节,用byte表示,一般写作‘B‘,1B = 8b
- 1024B = 1KB
- 1024KB = 1MB
- 1024MB = 1GB
- 1024GB = 1TB
进制转换
- 十进制:
- 基数是0-9,逢10进1
- 示例:234 = 2 * 10^2 + 3 * 10^1 + 4 * 10^0 = 200 + 30 + 4 = 234
- 二进制:
- 基数0和1,逢2进1
- 示例:0b110100 = 2^5 + 2^4 + 2^2 = 32 + 16 +4 = 52
- 十进制转二进制:除2取余,倒序书写
- 八进制:
- 基数0-7,逢8进1
- 八进制转二进制:八进制的1位表示3位二进制
- 0o123 = 0b 001 010 011
- 十六进制:
- 基数0-9、A-F,逢16进1
- 示例:0xAB = 10 * 16^1 + 11 *16 ^ 0 =160 + 11 = 171
- 十六进制转二进制:十六进制的1位表示4位的二进制数
- 0xABC = 0b 1010 1011 1100
- 计算机中的数据是以哪种进制存储的?为什么?
- 二进制,因为计算机在设计的时候只识别二进制。
- 具体原因:稳定性高(0和1)、成本低(技术上容易实现)、与生活中的真假逻辑相吻合(易于解决生活中的问题)
- 计算机中的数据是如何表示的?
-
-
最高位作为符号位:0表示正数,1表示负数
-
虽然牺牲了最高位,但是可以解决负数的表示问题,简化了硬件设计成本
-
-
原码反码和补码:是针对负数而言的(正数的三码一致)
-
负数的反码等于原码的符号位不变,数据位取反
-
负数的补码等于反码加1
-
-
计算机中的数据都是以补码的形式表示的
-
-
数据类型
-
说明:不同的数据类型都是为了解决生活中的实际问题而出现的,而且每种类型都有相关的运算。
-
python中常见数据类型:整型、浮点、布尔、字符串、列表、元组、集合、字典等
-
整型(int):就是数学中的整数
-
浮点(float):就是数学中的小数
# 浮点
b = 3.14
print(b, type(b))
?
# 科学计数法
c = 3.1415e-3
print(c) -
复数(complex):了解
# 复数
d = 3 + 5j
print(type(d)) -
布尔(bool):对应于生活中的真假逻辑,只有两个值
True/False
-
空(NoneType):空类型,只有一个值
None
-
字符串(str):使用引号括起来的一串字符
-
定义:单引号、双引号、三个单引号、三个双引号都可以
-
转义:使特殊意义的字符失去原有的意义,变成普通字符,使用‘‘处理
-
特殊字符:‘ ‘、‘ ‘、‘ ‘
-
原始字符:在定义字符串的格式前添加一个字符‘r‘即可,所有的字符都变成了普通字符
-
-
列表(list):通过[]进行定义,可以存储一系列的任意数据,是容器类型。
lt = [1, ‘hello‘, 3.14]
print(lt, type(lt))
# 通过下标获取元素,下标是从0开始的
print(lt[0])
# 存在越界问题
# print(lt[3]) -
元组(tuple):通过()进行定义,可以作为容器存储任意数据,元组是不可修改的。
tp = (1, 2, 3)
print(tp, type(tp))
# 也是通过下标访问元素
print(tp[0])
# 定义单个元素的元组,不要忘记后面的逗号
tp = (1,) -
集合(set):通过{}进行定义,也可以作为容器存储任意数据,但是元素不会重复,是无需的。
s1 = {‘李白‘, ‘杜甫‘, ‘白居易‘, ‘骆宾王‘, ‘苏轼‘, ‘李白‘}
s2 = {‘李白‘, ‘王安石‘, ‘王维‘}
print(s1, type(s1))
# 交集
print(s1 & s2)
# 并集
print(s1 | s2)
# 差集
print(s1 - s2)
print(s2 - s1)
?
# 定义空集合,不能使用{},应该使用set()
# {}是定义空字典的
# s = {}
s = set()
print(type(s))集合经常用于去重操作。
-
字典(dict):通过{}进行定义
-
元素是由键值对组成的
-
键和值之间使用‘:‘连接
-
键必须是唯一的,值可以是任意的
-
字典中的键值对可以更改
-
示例:
d = {‘name‘: ‘ergou‘, ‘age‘: 20}
print(d, type(d))
# 根据键获取值
print(d[‘name‘])
# 直接根据键获取值,当键不存在时会报KeyError错
# print(d[‘height‘])
# 通过get方法,根据键获取值,有就返回值,没有返回None
print(d.get(‘height‘))
# 通过get还可以设置默认值
print(d.get(‘weight‘, 90))
?
# 统计元素个数
print(len(lt))
# 对于字典表示的时键值对的个数
print(len(d)) -
类型转换
-
隐式类型转换:混合运算、条件判断等场景
-
强制类型转换:使用专门的函数进行转换
int:转换为整型,base是用来指明参数的进制类型
float:转换为浮点数
str:转换为字符串
list:转换为列表
tuple:转换为元组
set:转换为集合
dict:转换为字典 -
示例:
# 转换为整型
# a = int(3.84)
# base:指明参数的进制类型
a = int(‘123‘, base=8)
print(a, type(a))
?
b = int(True)
print(b)
?
# 浮点
c = float(250)
print(c, type(c))
?
# 字符串
d = str(123)
print(d, type(d))
?
# 列表
e = list(‘hello‘)
e = list((1, 2, 3))
e = list({1, 2, 3})
# 也可以转换,但是只保留键
e = list({‘name‘: ‘goudan‘, ‘age‘: 18})
print(e, type(e))
?
# 元组
f = tuple([‘小芳‘, ‘小敏‘, ‘小马‘])
print(f, type(f))
?
# 集合
g = set([‘小杜‘, ‘小王‘, ‘小杜‘])
print(g, type(g))
?
# 字典
lt = [(‘name‘, ‘dahua‘), (‘age‘, 18)]
h = dict(lt)
print(h, type(h))
?
字符串操作
-
示例:
s1 = ‘hello‘
s2 = ‘world‘
# ‘+‘可以直接将字符串拼接在一起
s3 = ‘(‘ + s1 + ‘ ‘ + s2 + ‘)‘
print(s3)
?
# ‘*‘可以重复指定的内容
s4 = s1 * 3
print(s4)
?
# 统计字符个数
print(len(s4))
?
s = ‘abcdefg‘
# 从前面开始提取,下标从0开始
print(s[0])
# 从结尾开始提取,下标从-1开始
print(s[-1])
?
# 切片
?
# 包括起始下标,不包括结束下标,默认步进值为1
print(s[1:3])
?
# 当一边的边界不指定时,提取到该边界
print(s[:4])
print(s[2:])
print(s[1:-2])
print(s[-3:])
print(s[:-2])
print(s[:])
?
# 完整写法:[起始:结束:步进]
print(s[::2])
# 逆序
print(s[::-1])
-
以上是关于数据类型的主要内容,如果未能解决你的问题,请参考以下文章
对“xxx”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。 错误解决一例。(代码片段