您的位置:首页 > 编程语言 > Python开发

python基础数据类型:字符串操作

2018-12-17 21:09 417 查看

数据类型

存储单位

  • 最小单位是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])
  • 内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: