02-数据类型

数据类型

存储单位

  • 最小单位是bit,表示一位二进制的0或1,一般写作’b’,是网路数据传输的单位
  • 最小的存储单位是字节, 用byte表示,一般写作’B’,1B = 8b
  • 1024B = 1KB
  • 1024KB = 1MB
  • 1024MB = 1GB
  • 1024GB = 1TB
  • 实例: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
    • 示例:0b110100 = 2^5 + 2^4 + 2^2 = 32 + 16 + 4 = 52
    • 十进制转二进制:除2取余,倒序书写
    • 22 = 0b10110
  • 八进制:
    • 基数0~7,逢8进1
    • 示例:0o123 = 1 * 8^2 + 2 * 8^1 + 3 * 8^0 = 64 + 16 + 3 = 83
    • 八进制转二进制:八进制的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):使用引号括起来的一串字符

    • 定义:单引号、双引号、三个单引号、三个双引号都可以
    • 转义:使特殊意义的字符失去原有的意义,变成普通字符,使用’\’处理
    • 特殊字符:’\n’、’\t’、’\r’
    • 原始字符:在定义字符串的格式前添加一个字符’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])

练习:

  • 列表、元组等的切片操作

猜你喜欢

转载自blog.csdn.net/qq_42795565/article/details/81349659