• python数据类型及有关的实用函数


    本系列例子使用python3.x, 编辑时间:2019-09-03,23:03:36

    python以“对象引用”来存储数据,以对象来表达数据,每个对象都具有身份,对象和值。

    实用函数:

    • id(): 查看变量的id地址
    • type() : 查看对象类型
    • input(): 获取字符串类型的 用户输入的变量
    • eval(): 用来执行一个字符串表达式,并返回表达式的值。可与input()结合使用,获取连续变量值
    • 交换变量: x, y = y, x
    num1, num2, num3 = eval(input("输入三个数,中间以逗号隔开:"))
    
    try:
        print(num1, num2, num3)
    except Exception as e:
        print("error: ", e)
    
    运行结果:
    输入三个数,中间以逗号隔开:17, 18, 19
    17 18 19

    常见的Python内置类型:

    1. 数值类型(Numeric Types): 包含int(整数),float(浮点数),complex(复数)
    2. 序列类型(Sequence Types): 有str(字符串), list(列表),tuple(元组)
    3. 迭代类型(Iterator Types): 提供容器,使用for循环进行迭代操作
    4. 集合类型(Set Types): 有set(可变集合)和frozenset(固定集合或不可变集合)
    5. 映射类型(Mapping Types): 只有dict(字典)

    数据类型

    1.整数类型:

    • 整数Interger:

        进制转换函数:

      • bin(int): 十进制转二进制,转换的数据会以 0b 为前缀字符
      • oct(int): 十进制转八进制,转换的数据会以 0o 为前缀字符
      • hex(int):十进制转二进制,转换的数据会以 0x 为前缀字符
      • int(s, base):将字符串s根据base参数转换成十进制数值
      • format(value[,format_spec]):此函数用于十进制转换为其它进制(去除前缀字符)
    dec_num = 255  # 十进制数
    print(bin(dec_num))  # 二进制  输出"0b11111111"
    print(oct(dec_num))  # 八进制  输出"0o377"
    print(hex(dec_num))  # 十六进制  输出"0xff"
    
    bin_num = '0b' + '10101'
    print(int(bin_num, 2))  # 二进制转十进制 输出 21
    
    num = 78  # 十进制数
    print(format(num, 'b'))  # 输出二进制字符串 "1001110"
    print(format(num, 'o'))  # 输出八进制字符串 "116"
    print(format(num, 'x'))  # 输出十六进制字符串 "4e"
    • 布尔Boolean:

        Bool(Boolean)为int的子类,可以使用bool()函数。它只有True和False两个值。

      • True:  可以采用数值1来表示
      • False:  数值0,特殊对象None,空字符串,空列表,空元组都将返回False       

    2.浮点数类型:

    • 小数(float):

        常用函数:

      • float():强制转换为浮点数
      • fromhex():对象方法,将十六进制浮点数转为十进制
      • hex():类方法,返回字符串形式的十六进制的浮点数
      • is_integer():类方法,判断是否为整数,若小数位数为零,返回True
    float_num = 71.235  # 定义浮点数
    float_num_hex = float_num.hex()  # 返回字符串形式的十六进制浮点数
    print(float_num_hex)  # 输出 "0x1.1cf0a3d70a3d7p+6"
    print(float.fromhex(float_num_hex))  # 转回十进制数 输出 71.235

        特殊浮点数:

        float('nan'), float('Infinity'), float('-inf')是三个特殊的浮点数,分别代表 非数字(Not a number),无穷大(Infinity), 负无穷大(Negative Infinity)

        可以使用标准库 math 模块中的 isnan()判断是否为NaN数据,isinf()判断是否为inf或-inf数据

    • 复数(complex):

        complex(re, im): re为real,实数;im为imagine,虚数,虚数部分需加上字符‘j’或‘J’

    complex_num = 5 + 6j
    print(type(complex_num))  # 输出 <class 'complex'>
    print(complex_num.real)  # 输出实数部分 5.0
    print(complex_num.imag)  # 输出虚数部分 6.0
    • 更精确的Decimal类型:
      • 使用Decimal类型需要导入decimal模块
      • 将Decimal()函数设为字符串可以指定有效位数,多个Decimal数据相加,和的有效位数为和数中最大的有效位数;相乘的积的有效位数为乘数的有效位数之和
      • getcontext(): 获取Decimal算数运算环境的各项记录的定义,如精确度,舍入规则等。getcontext().prec为精确度,getcontext().rounding为舍入规则
    from decimal import *
    
    print(Decimal(10/3)) # 输出 3.333333333333333481363069950020872056484222412109375
    num_1 = Decimal('0.125'); num_2 = Decimal('8.8888') # 使用字符串参数指定有效位数
    print(num_1 + num_2)  # 输出 9.0138
    print(num_1 * num_2)  # 输出 1.1111000
    
    print(getcontext().prec)  # 返回精确度 输出 28
    getcontext().prec = 3  # 设置精确度
    print(num_1 + num_2)  # 输出 9.01
    
    print(getcontext().rounding)  # 返回舍入规则 输出 ROUND_HALF_EVEN
    getcontext().rounding = ROUND_FLOOR  # 设置舍入规则为向负无穷大舍入
    print(num_1 * num_2)  # 输出 1.11

    3.分数类型:

    •  使用分数功能,需要导入fractions模块。Fractions()方法如下

         Fraction(numerator, denominator):

      • numerator: 分子,默认值为0
      • denominator: 分母,默认值为1
      • 无论分子还是分母,只能使用正整数或负整数,否则将报错
    • Fraction()方法将自动约分,但参数不能将浮点数和整数混合使用,否则将产生TypeError错误
    • 配合Fraction()方法可以把分数进行加或乘的运算
    from fractions import Fraction
    
    num_1 = Fraction(12, 36)  # 定义分数变量, 分子12,分母36
    num_2 = Fraction(3, 7)
    print(num_1 + num_2)  # 加法 输出 16/21
    print(num_1 * num_2)  # 乘法 输出 1/7
    num_3 = Fraction(2.1, 3) # 报错: error:  both arguments should be Rational instances(两个参数都应该是有理数)[由于计算机存储浮点数的方式,不能准确地储存浮点数]

    本系列博客主要从《从零开始学Python程序设计》提取

  • 相关阅读:
    软工小白菜的团队介绍和采访
    团队作业第二次——团队Github实战训练
    团队作业第一次—团队展示和项目展示
    week5:Technology: Internets and Packets
    week3:History: The Web Makes it Easy to Use
    week2:History: The First Internet
    week4:History: Commercialization and Growth
    week1:History: Dawn of Electronic Computing
    第二日会议博客
    第一日会议博客
  • 原文地址:https://www.cnblogs.com/exploer/p/11450714.html
Copyright © 2020-2023  润新知