首页 > 编程语言 >3.python 数据类型转换

3.python 数据类型转换

时间:2024-03-31 18:44:40浏览次数:14  
标签:类型转换 python res float complex int num print 数据

# python数据类型转换


"""
python数据类型转换可以分为两种:
隐式类型转换-自动完成
显示类型转换-需要使用类型函数来转换
"""
# 隐式类型转换(自动类型转换)
# 隐式类型转换中,python会自动将一种数据类型转换为另一种数据类型。
# 转换规则:低精度向高精度转换 (bool -> int -> float -> complex)
num_int = 123
num_float = 1.23
num_bool = True
num_complex = 3 + 2j
# bool + int -> int
num_new = num_bool + num_int
print(num_new, type(num_new))  # 124 <class 'int'>
# bool + float -> float
num_new = num_bool + num_float
print(num_new, type(num_new))  # 2.23 <class 'float'>
# bool + complex -> complex
num_new = num_bool + num_complex
print(num_new, type(num_new))  # (4+2j) <class 'complex'>
# int + float -> float
num_new = num_int + num_float
print(num_new, type(num_new))  # 124.23 <class 'float'>
# int + complex -> complex
num_new = num_int + num_complex
print(num_new, type(num_new))  # (126+2j) <class 'complex'>
# float + complex -> complex
num_new = num_float + num_complex
print(num_new, type(num_new))  # (4.23+2j) <class 'complex'>

# 显式类型转换(强制类型转换)
var1 = 123
var2 = 5.78
var3 = False
var4 = 7 + 9j
var5 = '4567'
var6 = '78.89'
var7 = '4-5j'

# 强转成整型(可以转的类型:整型本身,浮点型,布尔值,纯数字的字符串)
# 浮点型 -》整型
res = int(var2)
print(res)  # 5
# 布尔值 -》整型
res = int(var3)
print(res)  # 0
# 复数 -》整型:失败,不可转
# res = int(var4)
# print(res)  # TypeError: can't convert complex to int
# 纯数字字符串 -》整型
res = int(var5)  # 纯数字的字符串
print(res)  # 4567
# 整型 -》整型
res = int(var1)
print(res)

# 强转成浮点型
# 整型 -》浮点型
res = float(var1)
print(res)  # 123.0
# 浮点型 -》浮点型
res = float(var2)
print(res)  # 5.78
# 布尔值 -》浮点型
res = float(var3)  # True => 1.0, False => 0.0
print(res)  # 0.0
# 复数 -》浮点型:失败,报错
# res = float(var4)
# print(res)  # TypeError: can't convert complex to float
# 纯数字字符串 -》浮点型
res = float(var5)
print(res)  # 4567.0
# 纯小数字符串 -》浮点型
res = float(var6)
print(res)  # 78.89

# 强转成复数
# 整型 -》复数
res = complex(var1)
print(res)  # (123+0j)
# 浮点型 -》复数
res = complex(var2)
print(res)  # (5.78+0j)
# 布尔值 -》复数
res = complex(var3)
print(res)  # 0j
# 复数 -》复数
res = complex(var4)
print(res)  # (7+9j)
# 纯数字字符串 -》复数
res = complex(var5)
print(res)  # (4567+0j)
# 纯小数字符串 -》复数
res = complex(var6)
print(res)  # (78.89+0j)
# 纯复数字符串 -》复数
res = complex(var7)
print(res)  # (4-5j)

# 强转成布尔型
# 布尔型为假(False)的十种情况
# 0, 0.0, False, 0j, 空字符串(''), 空列表([]), 空元组(()), 空集合(set()), 空字典({}), None

# None是系统关键字,代表空,什么也没有,一般用于变量初始化
a = None
b = None
print(a)  # None
print(b)  # None

# 容器类型的强制转换 str list tuple set dict
var1_str = '这是一个字符串'
var2_list = ['这', '是', '一', '个', '列', '表']
var3_tuple = ('这', '是', '一', '个', '元', '组')
var4_set = {'这', '是', '一', '个', '集', '合'}
var5_dict = {1: '这', 2: '是', 3: '一', 4: '个', 5: '字', 6: '典'}
var6_int = 123
var7_float = 1.23
var8_bool = True
var9_complex = 2 + 3j

# 强转成字符串
# 规则:在当前数据两边套上引号
res = str(var1_str)
print(res)  # 这是一个字符串
res = str(var2_list)
print(res, repr(res))  # ['这', '是', '一', '个', '列', '表'] "['这', '是', '一', '个', '列', '表']"
res = str(var3_tuple)
print(res, repr(res))  # ('这', '是', '一', '个', '元', '组') "('这', '是', '一', '个', '元', '组')"
res = str(var4_set)
print(res, repr(res))  # {'个', '集', '一', '这', '是', '合'} "{'个', '集', '一', '这', '是', '合'}"
res = str(var5_dict)
print(res,
      repr(res))  # {1: '这', 2: '是', 3: '一', 4: '个', 5: '字', 6: '典'} "{1: '这', 2: '是', 3: '一', 4: '个', 5: '字', 6: '典'}"
res = str(var6_int)
print(res, repr(res))  # 123 '123'
res = str(var7_float)
print(res, repr(res))  # 1.23 '1.23'
res = str(var8_bool)
print(res, repr(res))  # True 'True'
res = str(var9_complex)
print(res, repr(res))  # (2+3j) '(2+3j)'
# 不转义字符串,原型化输出
print(repr(res))

# list强转成列表
"""
规律:
如果是字符串:把里面的字符单独一个个抽出来作为列表的新元素
如果是字典:把里面的键抽出来,作为列表的新元素
如果是其他:无脑在该数据类型两边加上[]
"""
res = list(var1_str)
print(res)  # ['这', '是', '一', '个', '字', '符', '串']
res = list(var2_list)
print(res)  # ['这', '是', '一', '个', '列', '表']
res = list(var3_tuple)
print(res)  # ['这', '是', '一', '个', '元', '组']
res = list(var4_set)
print(res)  # ['合', '是', '个', '这', '集', '一']
res = list(var5_dict)
print(res)  # [1, 2, 3, 4, 5, 6]
# res = list(var6_int)  # 整型是不可迭代类型
# print(res)  # TypeError: 'int' object is not iterable
# res = list(var7_float)
# print(res)  # TypeError: 'float' object is not iterable
# res = list(var8_bool)
# print(res)  # TypeError: 'bool' object is not iterable
# res = list(var9_complex)
# print(res)  # TypeError: 'complex' object is not iterable

# tuple强转成元组
"""
规律:
如果是字符串:把里面的字符单独抽出来作为元组的新元素
如果是字典:把里面的键抽出来,作为元组的新元素
如果是其他:无脑在该数据类型两边换上()
"""
res = tuple(var1_str)
print(res)  # ('这', '是', '一', '个', '字', '符', '串')
res = tuple(var2_list)
print(res)  # ('这', '是', '一', '个', '列', '表')
res = tuple(var3_tuple)
print(res)  # ('这', '是', '一', '个', '元', '组')
res = tuple(var4_set)
print(res)  # ('是', '一', '这', '个', '合', '集')
res = tuple(var5_dict)
print(res)  # (1, 2, 3, 4, 5, 6)
# res = tuple(var6_int)
# print(res)  # TypeError: 'int' object is not iterable

# 强转成集合
"""
规律:
如果是字符串:把里面的字符串一个个抽出来作为集合的新元素
如果是字典:把里面的键抽出来作为集合的新元素
如果是其他:无脑在该数据类型两边换上{}
注意:
自动去重,无序
"""
res = set(var1_str)
print(res)  # {'字', '符', '串', '一', '这', '个', '是'}
res = set(var2_list)
print(res)  # {'是', '个', '表', '一', '列', '这'}
res = set(var3_tuple)
print(res)  # {'一', '这', '是', '组', '个', '元'}
res = set(var4_set)
print(res)  # {'这', '是', '集', '个', '一', '合'}
res = set(var5_dict)
print(res)  # {1, 2, 3, 4, 5, 6}
# res = set(var6_int)
# print(res)  # TypeError: 'int' object is not iterable

# 强转成字典
# 二级容器 list tuple set dict
# 二级列表
var1 = [1, 2, 3, [4, 5, 6]]
# 二级元组
var2 = (1, 2, 3, (4, 5, 6))
# 二级集合
var3 = {1, 2, 3, (4, 5, 6)}
# 二级字典
var4 = {1: 'a', 2: 'b', 3: 'c', 4: {5: 'd'}}

# 四级容器
var5 = [1, 2, (3, 4, 5, {'a': 1, 'b': 2, 'c': {"aa": "bbbb"}})]
res1 = var5[-1]
print(res1)  # (3, 4, 5, {'a': 1, 'b': 2, 'c': {'aa': 'bbbb'}})

# 等长的二级容器[外面是容器,里面元素都是容器,容器里面的元素个数都相同]
var6 = [(1, 2, 3, 4), (5, 6, 7, 8)]
var7 = ({1, 2}, [3, 4], {5, 6})

# 强转字典时,需要等长的二级容器,且元素个数是两个
# 1.外面是列表,里面是元组/列表的等长二级容器
lst = [('a', 1), ('b', 2), ['c', 3]]
dic = dict(lst)
print(dic)  # {'a': 1, 'b': 2, 'c': 3}
# 2.外面是元组,里面是元组/列表的等长二级容器
tup = (('a', 1), ("b", 2), ['c', 3])
dic = dict(tup)
print(dic)  # {'a': 1, 'b': 2, 'c': 3}
# 3.外面是集合,里面是元组的等长二级容器
setvar = {('a', 1), ('b', 2), ('c', 3)}
dic = dict(setvar)
print(dic)  # {'b': 2, 'c': 3, 'a': 1}

# 其他用法1:外面是列表,里面是元组/集合 ,不推荐,集合无序,导致键值对顺序相反
lst = [('a', 1), ('b', 2), {'c', 3}]
dic = dict(lst)
print(dic)  # {'a': 1, 'b': 2, 3: 'c'}

# 其他用法2: 必须要求字符串长度为2,多了就报错
lst = [('a', 1), ('b', 2), ('c', 3), "23"]
dic = dict(lst)
print(dic)  # {'a': 1, 'b': 2, 'c': 3, '2': '3'}
lst = [('a', 1), ('b', 2), ('c', 3), "2233"]
dic = dict(lst)
print(dic)  # ValueError: dictionary update sequence element #3 has length 4; 2 is required

 

标签:类型转换,python,res,float,complex,int,num,print,数据
From: https://www.cnblogs.com/shuheng/p/18107061

相关文章

  • 1.python简介
    """python简介python版本:python-V或python--versionpython特色:1.python是一种解释性语言:这意味着开发过程中没有编译这个环节。类似于PHP和Perl2.python是交互式语言:这意味着可以在一个python提示符>>>后直接执行代码3.python是面向对象语言:这意味着python支持面向......
  • 03-数据库的用户管理
    一、创建新用户mysql>createuserxjzw@'10.0.0.%'identifiedby'1';QueryOK,0rowsaffected(0.01sec)二、查看当前数据库正在登录的用户mysql>selectuser();+----------------+|user()    |+----------------+|root@localhost|+-----------......
  • 如何利用python 把一个表格某列数据和另外一个表格某列匹配 类似Excel VLOOKUP功能
    环境:python3.8.10Excel2016Win10专业版问题描述:如何利用python把一个表格某列数据和另外一个表格某列匹配类似ExcelVLOOKUP功能先排除两表A列空白单元格,然后匹配x1表格和x2表格他们的A列,把x1表格中A列A1-A810范围对应的B列B1-B810数据,匹配填充到x2范围A1-A479,B1-B......
  • 【Python】反转数字(整数、百分数、小数、分数)
    (本人蒟蒻,dalao勿喷)需要代码往下翻,最后的代码最简洁喔~题设:'''给定一个数,请将该数各个位上数字反转得到一个新数。整数反转是将所有数位对调。小数反转是把整数部分的数反转,再将小数部分的数反转,不交换整数部分与小数部分。分数反转是把分母的数反转,再把分子的数反转,不交换......
  • Java(2)之变量,数据类型,运算符
    1、标识符在java中标识符是由字母数字下划线,美元符号组成(其中数字没办法作首)在java中是区分大小写的。2、关键字关键字是在java中赋予了特殊的含义的字符,只能用于特定地方例如包package类class接口interface引用:this,supe,创建对象:new等等关键字引用需要注意大小写,且......
  • python(django)之单一接口管理功能后台开发
    1、创建数据模型在apitest/models.py下加入以下代码classApis(models.Model):Product=models.ForeignKey('product.Product',on_delete=models.CASCADE,null=True)#关联产品IDapiname=models.CharField('接口名称',max_length=100)apiurl=mod......
  • Java-数据类型
    前言:本文主要讲述八大数据类型以及使用规范,最后对知识进行一个拓展。强类型语言要求变量使用要严格符合规定,所有变量都必须先定义后才能使用弱类型语言基本类型(primitivetype)引用类型(referencetype)*不规范的*规范的*如下面这种定义变量是可以成功:*注意事项:......
  • 数据结构_包装类&泛型
    目录一、包装类1.1基本数据类型和对应的包装类1.2装箱和拆箱1.3拓展 二、泛型2.1引出泛型2.2泛型的语法及使用2.3泛型是如何编译的2.3.1擦除机制2.4泛型的上界2.5泛型方法总结一、包装类在Java中,由于基本类型不是继承自Object类,为了在泛型代码中......
  • Linux内核数据管理利器--红黑树
    目录写在前面1.红黑树的原理2.红黑树操作2.1红黑树的节点插入2.2红黑树的节点删除2.3红黑树的查询操作3.红黑树操作实验附录A:实验代码写在前面本文通过两个方面让读者可以深入理解Linux内核中红黑树RBTree的实现以及使用,读完此文章,你可以收获:红黑树的特性红黑树的......
  • 数据仓库——事实表
    事实表事务事实表事务事实表用于跟踪事件,通过存储事实和与之关联的维度细节,允许单独或聚集地研究行为。粒度稀疏性包含可加事实无事实的事实表不包含事实的事实表被称作无事实的事实表。虽然没有明确地记录事实,但是却能够支持度量。为事件而设的无事实的事实表,记录活动......