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
  • 十六进制:
    • 基数09、AF,逢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©)

  • 布尔(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))

  • 说明:相当于储存变量的内存块的地址编码

    数据简单操作

    • 字符串

      s = 'hello'
      # 字符串的重叠
      s = 'hello' * 2
      # 字符串的拼接
      s = 'hello' + 'world'
      print(s)
      # 统计字符个数
      print(len(s))
      
      # 提取单个字符,通过下标提取
      # 从开头提取,下标从0开始
      print(s[0])
      # 从结尾提取,下标从-1开始
      print(s[-1])
      
      # 切片:s[开始:结束:步进]
      s = 'abcdefg'
      # 包括起始下表,不包括结束下标,默认的步进值为1
      print(s[0:3])
      print(s[2:4])
      # 当一边没有指定就提取到该边的边界
      print(s[:4])
      print(s[3:])
      print(s[1:-2])
      print(s[-4:])
      print(s[:])
      print(s[::2])
      # 倒序提取
      print(s[::-1])
      
      # 格式化
      
      # %s:字符串
      # %d:整数
      # %f:小数
      # %c:单个字符
      print('俺叫%s,暗恋%s,她今年%d岁了' % (name, like, age))
      
      print('我是{},今年{},暗恋{}'.format(name, age, like))
      print('我是{2},今年{1},暗恋{0}'.format(name, age, like))
      print('我是{nm},今年{a},暗恋{l}'.format(nm=name, a=age, l=like))
      
    • 列表

      lt = [1, 2, 3, 4, 5]
      
      print(lt[0])
      print(lt[-1])
      print(lt[1:4])
      print(len(lt))
      
      # 修改
      lt[0] = 100
      
      # 添加的对象在列表是一个元素
      lt.append(250)
      # lt.append(['hello', 'world'])
      # 将可迭代对象的每个元素挨个添加
      lt.extend(['hello', 'world'])
      
      # 在指定位置插入元素
      lt.insert(3, 'good')
      
      # 根据下标删除元素
      del lt[0]
      # 根据值删除元素
      lt.remove(250)
      
      # 删除并返回指定下标的元素,默认最后一个元素
      last = lt.pop(4)
      print(last)
      
      # 查询索引号
      lt = [1, 2, 3, 1, 1]
      print(lt.index(1))
      # 逆序
      # lt.reverse()
      # 统计指定对象出现的次数
      print(lt.count(1))
      lt = [1, 5, 7, 3]
      # 排序,默认升序排序,可以通过reverse指定是否倒序排序
      lt.sort(reverse=True)
      print(lt)
      

    ASCII

    • 说明:美国信息交换标准代码,其实就是给每个字符使用一个整数表示
    • 函数:
      • ord:根据字符获取ASCII码
      • chr:根据ASCII码转换成字符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值