首页 > 编程语言 > 详细

python 数据类型、进制转换

时间:2020-08-29 22:34:47      阅读:99      评论:0      收藏:0      [点我收藏+]

存储单位

  • 最小单位是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))
    技术分享图片

     

  • 说明:了解,不要深究

 

技术分享图片
数据类型

- 集合
      添加:add
      删除:
          remove,元素存在就删除,不存在就爆粗
          discard,元素存在就删除,不存在也不保存
          pop,随机弹出一个元素,返回后删除元素
      清空:clear
      并集:union
      交集:
          intersection:不改变原集合
          intersection_update:使用交集更新原集合
      差集:
          difference:不会改变原集合
          difference_update:使用差集更新原集合
      判断:
          isdisjoint:是否没有交集
          issubset:是否是另一集合的子集
          issuperset:是否是另一集合的超集(父集)
- 字典
      获取:
          d[key]:根据键获取值,不存在时或报错
          d.get(key, ‘默认值‘):不存在时默认返回None,也可以指定默认值
      更新:
          d[key] = value    键存在就更新,不存在就添加
          d.update(d2)    将字典d2中的键值对依次添加到d中,已经存在的键会覆盖
      删除:
          del d[key]
          d.pop(key)        返回删除的值
      清空:clear
      所有键:keys        返回可迭代对象
      所有值:values        返回可迭代对象
- 字符串
      join:拼接
      split:切割,从左边
      rsplit:从右边切割
      splitlines:按照换行符切割
  自行测试:
      find:查找第一次出现指定字符串的位置,没有时返回-1
      rfind:从右边开始查,返回第一次出现的位置
      
      upper:全大写
      lower:全小写
      swapcase:大小写转换
      capitalize:首字符大写
      title:每个单词首字母大写
      
      count:统计某个字符串出现的次数
      startswith:是否以指定字符串开头
      endswith:是否以指定字符串结尾
      
      istitle:是否每个单词首字母大写
      islower:是否是全小写
      isupper:是否是全大写
      isdecimal:是否是数字
      isalpha:是否是字母
      isalnum:是否是数字或字母

python 数据类型、进制转换

原文:https://www.cnblogs.com/weiyangchen/p/13583621.html

(0)
(0)
   
举报
评论 一句话评论(0
分享档案
最新文章
教程昨日排行
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!