Python的数据类型总结

简介: Python的数据类型总结
  1. Numbers  数字类型
        包括 int(整型);bool(布尔类型);float(浮点型);complex(复数)

  2. String  字符串类型
    1. 用单引号或者双引号标识
    2. 转义\ 或 r 可以使转义字符失去转义效果
    3. 联级字符串,如 "this " "is " "string" 会被自动转换为 this is string
    4. 字符串拼接, + 将字符串拼接起来,* 重复字符串
    5. 字符串索引:从左往右从0开始,从右往左从-1开始
    6. 字符串的截取语法格式:变量 [ 头下标 : 尾下标 : 步长 ]
  3. tuple  元组类型
    元组用()标识,内容不可改变  
  
  4. list  列表类型
    列表用[]标识,内容可以更新修改  
  5. dict  字典
    字典用{}标识,以键值对的形式表示 {'key' : 'value' }
  6. set  集合
    集合用 {}标识,内部的数据是不重复的

  1. 数据类型转换
      1. 隐式转换,可以兼容的不同类型相加,转换为同一类型   
      2. 显式转换,使用关键字将不同类型强制转换
        1. 转换为int类型——int()
        
        2. 转换为float类型——float()  
        3. 转换为字符串类型 
        4. 转换为元组类型——tuple() 
        5. 转换为列表类型——list() 
        6. 转换为字典类型——dict()
        7. 转换为集合类型——set()
  2. Python推导式
      1. 推导式是一种独特的数据处理方式,可以将数据序列构建另一个数据序列的结构体
      2. 语法:表达式 for 迭代变量 in 可迭代对象 [ if 条件表达式 ]
      3. 列表推导式:list = [ i for i in 可迭代对象 if 条件语句 ]
    复制代码

    常规循环

    lis = []
    for i in range(5): lis.append(i)

    使用列表推导式

    j = [j for j in range(5) if j > 2] # [3, 4]

    嵌套列表推导式

    l1 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    l1 = [l1[i][i] for i in range(len(l1))] # [1, 5, 9]

    通过循环列表得到新的符合条件的列表

    list1 = [1, 2, 4, 5, 7, 4, 5, 7, 8, 4, 3, 5, 6, 5, 6, 6]
    list2 = [list2 + 2 for list2 in list1 if (list2 % 3 == 0)]

    可以进行多个for循环

    list3 = [(x, y, z) for x in range(5) for y in range(4) for z in range(3)]
      4. 字典推导式: dict = { key :value for i , j in 可迭代对象 if 条件语句 }

    字典推导式

    dict0 = {x: y for x in ('a', 'b', 'c') for y in (1, 2, 3,)} # {'a': 3, 'b': 3, 'c': 3}

    通过循环修改原来的字典

    dict1 = {"a": 10, "B": 20, "D": "hello world", "e": "python教程"}

    筛选出key是小写字母的值

    dict2 = {key: value for key, value in dict1.items() if (key.islower())} # {'a': 10, 'e': 'python教程'}

    将key的值全部变成小写字母

    dict3 = {key.lower(): value for key, value in dict1.items()} # {'a': 10, 'b': 20,'d': 'hello world', 'e': 'python教程'}
      5. 集合推导式: set = { i for i in 可迭代对象 if 条件语句 }

    集合推导式: 集合推导式和字典推导式都是用{}表示,字典是键值对形式,反之是集合

    set1 = {x * 2 for x in (1, 2, 2, 3, 4) if x >= 2} # {8, 4, 6} 集合自动去重

    推到对象为字典,keys(),values(),items()

    set2 = {x for x in {'1': 1, '2': 2}.items()} # {'2', '1'}
      6. 元组推导式: tuple = ( i for i in 可迭代对象 if 条件语句 )

    元组推导式,元组推导式和列表相同,但是元组推导式返回的是一个生成器对象

    tup = (x for x in range(10)) # at 0x0000024884365E40>

    用类型转换tuple()将对象转换为元组

    tup1 = tuple(tup) # (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
  3. Python运算符
      1. 算术运算符
        +  加法      -  减法        乘法      /  除法
         %  取余      **  幂       //  向下取整
      2. 比较运算符
        >  大于号    <  小于号    =  等于号
        >=  大于等于号  <=  小于等于号  != 不等于号
      3. 赋值运算符
        +=  加法赋值运算符       -=  减法赋值运算符     
    =  乘法赋值运算符       /=  除法赋值运算符
        %=  取余赋值运算符       **=  幂赋值运算符
        //=  取整赋值运算符      :=   海象赋值运算符
      4. 位运算符
        &  位与运算符,对应的两个二进制都为1时,结果位为1
        |   位或运算符,对应的两个二进制有一个为1时,结果位为1
        ^   位异或运算符,对应的两个二进制相异时,结果位为1
        ~  位取反运算符,对每个二进制位取反,是负数,~x 类似于-x-1
        <<  左移动运算符,二进制的位数向左移动,高位丢弃,低位补零
        >>  右移动运算符,二进制的位数向右移动,高位丢弃,低位补零

    位运算符

    a = 60   # 即    0011 1100
    b = 13   # 即    0000 1101
    a & b   # 12    0000 1100
    a | b          # 61    0011 1101
    a ^ b   # 49    0011 0001
    ~a  # -61   1100 0011
    a << 2   # 240   1111 0000
    a >> 2   # 15  0000 1111
      
      5. 逻辑运算符
        and  与,即满足所有条件则为真
        or   或,即满足其中之一都为真
        not   非,如果x为true,返回false,x为false,返回true
      6. 成员运算符
        in     如果在指定的序列中找到值返回true,否则返回false
        not in   如果在指定的序列中没有找到值返回true,否则返回false
      7. 身份运算符
        is      判断两个标识符是不是引用自一个对象
         is not    判断两个标识符是不是引用自不同对象
      8. 海象运算符
        1. 海象运算符本质上是一个赋值表达式,具有返回值,不能单独使用,和其他运算符一起使用

    海象运算符类似于赋值运算符,本质上是一个赋值表达式,具有返回值,不能单独使用,他可以将赋值掺杂在表达式之中,简化代码,没有区分优先级

    主要应用场景

    在if后面使用

    if传统用法

      a = 1
      if a > 0: a += 1 # 2

    使用海象运算符

      if b := 1 > 0: b += 1 # 2

    在while后面使用,传统

      numbers = [1, 2, 3, 4, 0, 5, 6]; i = 0; j = numbers[i]
      while j != 0:
      print("我是", j, "循环继续!")
      i += 1
      j = numbers[i]
      numbers1 = [2, 3, 5, 7, 5, 0, 2, 3]
      k = 0
      while x := numbers1[k] != 0:
      print("我是", x, "循环继续!") # 我是 True 循环继续!
      k += 1

    在列表中使用

      n = [(m := 1) + 1, m - 1, m * 1, m / 1] # [2, 0, 1, 1.0]
    //代码效果参考:http://www.zidongmutanji.com/zsjx/472131.html

    1. 常用的内置数学函数 
      python常用的内置数学函数
      1.abs(x) 返回数字的绝对值 abs(-2) = 2
      2.max(...) 返回最大值 max(1,2,3,4,2,1) = 4
      3.min(...) 返回最小值 min(1,2,3,4,3,2,1) = 1
      4.pow(x,y,z) x的y次方运算取余z后的值,z为可选参数 pow(3,3) = 27
      5.random.choice(x) 在给定序列中挑选一个随机数 random.choice([1, 2, 3, 4])
      6.random.random() 随机生成一个实数,范围(0,1]之间 random.random()
      7.random.randint(x,y) 随机选取x-y范围内的实数 random.randint(1,10)
      8.random.shuffle(x) 将序列的所有元素随机排序 print(random.shuffle([1,2,3,4,5])) = None 不能直接输入
      9.uniform(x,y) 随机生成一个浮点数,范围在[x,y]之间 random.uniform(1,3) = 1.630618864424037(随机改变)
      10.ramdom.sample(序列, x) 在序列中随机选取x个数 random.sample([1,2,3,4,5,6],3) 随机获取三个数
    2. 常用的math函数
      python常用的math函数
      9.math.modf(x) 返回x的带符号小数和整数部分 math.modf(-23.45) = (-0.4499999999999993, -23.0)
      10.math.fmod(x,y) 返回x%y的值可带符号,对比正常的x%y取余时当x为负数时,取值会有出入 math.fmod(-22,3) = -1.0 比较 22 % 3 = 2
      11.math.ceil(x) 向上取整 math.ceil(3/2) = 2
      12.math.floor(x) 向下取整 math.floor(10/3) = 3
      13.math.prod(iterable,start) 求iterable中所有值的积,start可选初始值 math.prod((1, 2, 3, 2), start=2) = 24
      14.math.copysign(x,y) 返回x的浮点值取y的正负符号 math.copysign(2,-22) = -2.0
      15.math.fabs(x) 返会x的绝对值 math.fabs(-22.22) = 22.22
      16.math.lcm(...) 返回输入参数的最小公倍数 math.lcm(2,3,4,6) = 12
      17.math.gcd(...) 返回输入参数的最大公约数 math.gcd(3,6,9,12) = 3
      18.math.sqrt(x) 返回非负x的平方根 math.sqrt(26) = 5.0990195135927845
      19.math.isqrt(x) 返回非负x的最大整数平方根 math.isqrt(20) = 4
      20.math.perm(n,k) 返回不重复且有顺序的组合,正整数,n>=k,结果为 n! / (n-k)! math.perm(4.2) = 20
      21.math.comb(n,k) 返回不重复且无顺序的组合,正整数,n>=k,结果为 n! / (k! * (n-k)!) math.comb(5,2) = 10
  4. 字符串及其常用函数
      1. 字符串中访问指定的值 
    字符串中访问指定的值
    1.用[i]下标表示,从左到右顺序从0开始,从右到左顺序从-1开始
    2.变量[头下标:尾下标],截取字符串区间
      2. 字符串改变值
    字符串改变值
    1.切片发:拼接 +,截取不需要改变的内容+需要改变的内容
    2.replace函数:newSstr=str.replace(oldstr,newstr)
      3. 转义字符
    转义字符
    1.(在行尾时) 表示续行,即可以从下一行继续编辑
    2.\ 反斜杠 即取消\的转义作用
    3.\' 单引号
    4.\" 双引号
    5.\000 空 即执行后显示空行
    6.\n 换行
    7.\r 回车 后面的内容移到字符串开头,并逐一替换开头部分的字符,直至将 \r 后面的内容完全替换完成。
    8.r'字符串' 原始字符串,即字符串按照原来的内容输出,没有转义作用
      4. 字符串格式化
    字符串格式化(format % value)
    %s 格式化字符串
    %d 格式化整数
    %nd 设置输入数字长度,不够则在前面空格补齐,n为0时用0补齐
    %.nf n表示保留几位小数
    例:print("我是%s,今年0%d,我会%.2f!" % ('小明', 22, 22.22222)) # 我是小明,今年022,我会22.22!
      5. 字符串format函数
    字符串format函数(字符串.format(value))
    1.如果{}中没有具体的下标,会依次进行替换value值
    例:print('我叫{},今年{}岁!'.format('小红', 23)) # 我叫小红,今年23岁!
    2.如果{}中设置了具体下标,则会按要求进行替换
    例:print('我叫{1},今年{0}岁!'.format(12, '小红', 23)) # 我叫小红,今年12岁!
    3.可以设置具体关键字进行替换value值
    例:print('我是{name},{sex},今年{age}岁!'.format(sex='男', name='强子', age=27)) # 我是强子,男,今年27岁!
    4.使用**传递字典作为关键字传递
    例:dict0 = {'name': '修勾', 'sex': '女', 'age': 24}
      print('我叫{name:s},{sex:s},今年{age:d}'.format(**dict0))  # 我叫修勾,女,今年24
    
    5.模板字符串 %
    例:print(Template('我叫$name,今年$age').substitute({'name':'python','age':22})) # 我叫python,今年22
    6.f 万金油用法:f"{变量}",可以面向对象,字典等
    例:dict1 = {'name': '小脑斧', 'sex': '女', 'age': 21}
      print(f"我叫{dict1['name']},{dict1['sex']},今年{dict1['age']}")  # 我叫小脑斧,女,今年21
    
      6. 三引号

    三引号,允许字符串跨行,包含特殊字符,单引号和双引号都可以

    para_str = '''这是一个多行字符串的实例
         多行字符串可以使用制表符
         TAB ( \t )。
         也可以使用换行符 [ \n ]。
      '''
    
      7. 常用的字符串函数
    字符串常用函数
    1.capitalize() 将字符串第一个字母换为大写
    2.center(width,fillchar) 返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。
    3.count(str,初始范围值,结束范围值) 返回 str 在指定字符串里面出现的次数
    4.endswith(str,初始范围值,结束范围值) 检查字符串是否以 obj 结束,是返回true,否则false
    5.find(str,初始范围值,结束范围值) 检查str是否在指定的字符串范围内,如果包含返回开始的索引值,否则返回-1
    6.index(str,初始范围值,结束范围值) 语法跟find一样,但是它会在不匹配的时候返回一个错误信息
    7.isalnum() 用来筛选都是字母或者数字的字符串
    8.isalpha() 用来筛选都是字母或者中文的字符串
    9.isdigit() 用来筛选只包含数字的字符串
    10.islower() 用来筛选都是小写字母的字符串
    11.isupper() 用来筛选都是大写字母的字符串
    12.join(seq) 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
    13.len(str) 返回字符串长度
    14.lower() 转换字符串中所有的大写字母为小写字母
    15.upper() 转换字符串中所有的小写字母为大写字母
    16.lstrip() 截掉字符串左边的空格或者指定字符串(有参数时)
    17.max(str) 返回字符串中最大的字符
    18.min(str) 返回字符串中最小的字符

//代码效果参考:http://www.zidongmutanji.com/bxxx/242540.html
20.replace(old,new) 字符串替换
21.rfind(str) 类似于find,但是是从右边开始查找
22.rindex(str)类似于index,但是是从右边开始查找
23.ljust(width,fillchar) 左填充,没有指定参数用空格填充
24.rjust(width,fillchar) 右填充,没有指定参数默认用空格填充
25.rstrip(char) 删除字符串末尾的空格或指定字符
26.split() 将字符串以参数为分隔符进行截取
27.strip() lstrip和rstrip的和写,移除字符串首尾的空格或指定字符串
28.swapcase() 将字符串的大写转为小写,小写转为大写
29.titl() 返回标题化字符串,即所有单词首字母为大写,其余为小写

相关文章
|
1月前
|
Python
【Python操作基础】——数据类型
【Python操作基础】——数据类型
|
13天前
|
Python 存储 数据处理
【Python数据类型的奥秘】:构建程序基石,驾驭信息之海
【Python数据类型的奥秘】:构建程序基石,驾驭信息之海
|
21天前
|
存储 程序员 Python
Python中不同的数据类型
【6月更文挑战第5天】
22 3
|
21天前
|
存储 数据处理 UED
Python3数据类型转换:打通进销存数据处理的通道!
Python3数据类型转换:打通进销存数据处理的通道!
|
1天前
|
存储 Java 索引
经验大分享:Python数据类型总结
经验大分享:Python数据类型总结
|
1天前
|
存储 Java 索引
经验大分享:Python数据类型总结
经验大分享:Python数据类型总结
|
2天前
|
索引 Python 容器
Python数据类型:编程新手的必修课
Python数据类型:编程新手的必修课
|
29天前
|
算法 数据处理 开发者
Python Number 数据类型
Python Number 数据类型
|
29天前
|
Python
Python pass 数据类型
Python pass 数据类型
|
1月前
|
存储 Python
Python中的布尔数据类型:深入探索与应用
Python中的布尔数据类型:深入探索与应用

热门文章

最新文章