【python全栈系列】day09-python数据类型转换

在Python中,数据类型转换是一项非常常见的操作,它允许我们将一种类型的数据转换为另一种类型。这种转换在处理来自不同源的数据时尤其有用,例如用户输入、文件读取或网络数据等。下面,我将通过代码示例来展示如何将其他数据类型转换为int、float、bool、string(字符串)、List(列表)、字典(dict)、集合(set)和元组(tuple)。

1、转换为int

# 从字符串转换  
s = "123"  
i = int(s,10)##后面10代表10进制,但是也可以不写
print(i, type(i))  # 输出: 123 <class 'int'>  # 从浮点数转换(注意:这可能会丢失小数部分)  
f = 123.456  
i = int(f)  
print(i, type(i))  # 输出: 123 <class 'int'>

2、转换为float

# 从字符串转换  
s = "123.456"  
f = float(s)  
print(f, type(f))  # 输出: 123.456 <class 'float'>  # 从整数转换  
i = 123  
f = float(i)  
print(f, type(f))  # 输出: 123.0 <class 'float'>

3、转换为bool

# bool(): 将其他数据类型转换为布尔类型
print(bool(100)) # True
print(bool(3.12)) # True
print(bool("hello")) # True
print(bool([12,34,7])) # True
print(bool((32,45,67))) # True
print(bool({"name":"三哥","age":18})) # True
print(bool(0)) # False
print(bool('')) # False
print(bool("")) # False
print(bool(' ')) # True
print(bool([])) # False
print(bool(())) #False
print(bool({})) # False
print(bool(None)) # False
# 数字0,空字符串""或者'',空列表[],空元组(),空字典{},空集合set(),None这些数据转换为bool类型 时是False.

总结一下上面的例子可以发现 (这个比较重要,后续开发中if判断用这个特点很好用)

  • 数字0,空字符串""或者'',空列表[],空元组(),空字典{},空集合set(),None这些数据转换为bool类型 时是False

  • 但是这里有个地方特别提醒一下,print(bool(' ')) # True这个中间实际是有字符(空格字符,这个判断返回True)

4、 转换为string

# 几乎所有类型都可以转换为字符串  
i = 123  
f = 123.456  
b = True  
l = [1, 2, 3]  
d = {'a': 1}  
s = str(i)  
sf = str(f)  
sb = str(b)  
sl = str(l)  
sd = str(d)  print(s, sf, sb, sl, sd)  
# 输出: 123 123.456 True [1, 2, 3] {'a': 1}

5、转换为元组

在Python中,几乎所有数据类型都可以间接地转换成元组(tuple),但直接转换通常意味着将集合、列表、字典、字符串或其他可迭代对象转换为元组。这是因为元组是一个不可变的序列类型,它可以包含多种数据类型(包括其他元组)的元素。以下是一些可以直接或间接转换为元组的数据类型:

5.1列表(List)转元组

列表是最常见的可以转换为元组的数据结构。使用tuple()函数可以很容易地将列表转换为元组。

my_set = {1, 2, 3}  
my_tuple = tuple(my_set)  
print(my_tuple)  # 输出可能是 (1, 2, 3) 或 (3, 1, 2),因为集合是无序的

5.2集合(Set)转元组

集合是一个无序的、不包含重复元素的集合。虽然集合不是通过索引来访问的,但你可以使用tuple()函数将其转换为元组。

my_set = {1, 2, 3}  
my_tuple = tuple(my_set)  
print(my_tuple)  # 输出可能是 (1, 2, 3) 或 (3, 1, 2),因为集合是无序的

5.3字典(Dict)转元组

字典不能直接转换为元组,因为它包含键值对。但是,你可以通过一些方法间接地将字典的内容转换为元组。例如,将字典的项(items())转换为元组的列表,或者将键(keys())和值(values())分别转换为元组。

my_dict = {'a': 1, 'b': 2}  
# 将项转换为元组的列表  
items_tuple_list = tuple(my_dict.items())  
print(items_tuple_list)  # 输出可能是 (('a', 1), ('b', 2)),顺序可能不同  # 分别将键和值转换为元组  
keys_tuple = tuple(my_dict.keys())  
values_tuple = tuple(my_dict.values())  
print(keys_tuple)  # 输出可能是 ('a', 'b')  
print(values_tuple)  # 输出可能是 (1, 2)

5.4字符串(String)转元组

my_str = "hello"  
my_tuple = tuple(my_str)  
print(my_tuple)  # 输出: ('h', 'e', 'l', 'l', 'o')

5.5其他可迭代对象转元组

my_range = range(5)  
my_tuple = tuple(my_range)  
print(my_tuple)  # 输出: (0, 1, 2, 3, 4)

5.6单个值转元组

my_value = 1  
my_single_element_tuple = (my_value,)  # 注意逗号  
print(my_single_element_tuple)  # 输出: (1,)

6、转换为List

# 字符串转换为列表(按字符分割)  
s = "hello"  
l = list(s)  
print(l, type(l))  # 输出: ['h', 'e', 'l', 'l', 'o'] <class 'list'>  
# 元组转换为列表  
t = (1, 2, 3)  
l = list(t)  
print(l, type(l))  # 输出: [1, 2, 3] <class 'list'>

注意:其他好多数据类型也可以转换成List,具体可以参考元组,可以转成元组的数据基本也可以转成List

7、字典(dict)

# 从元组列表转换(注意:需要是(key, value)对的列表)  
t_list = [('a', 1), ('b', 2)]  
d = dict(t_list)  
print(d, type(d))  # 输出: {'a': 1, 'b': 2} <class 'dict'>  # 从JSON字符串转换(需要import json)  
import json  
json_str = '{"a": 1, "b": 2}'  
d = json.loads(json_str)  
print(d, type(d))  # 输出: {'a': 1, 'b': 2} <class 'dict'>

8、转换为集合

# 从列表转换  
l = [1, 2, 2, 3]  
s = set(l)  
print(s, type(s))  # 输出: {1, 2, 3} <class 'set'>  

注意:其他好多数据类型也可以转换成集合,具体可以参考元组,可以转成元组的数据基本也可以转成集合

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/41068.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ABAC模型

属性基访问控制&#xff08;Attribute-Based Access Control&#xff0c;ABAC&#xff09;是一种动态和细粒度的访问控制模型&#xff0c;通过评估用户属性、资源属性、环境属性和动作属性来决定访问权限。这种模型比传统的角色基访问控制&#xff08;RBAC&#xff09;更灵活&a…

json数据的解析

1. Json是什么&#xff1f; JavaScript Object Natation, 一种轻量级的数据交换格式, 与XML一样, 广泛被采用的客户端和服务端交互的解决方案&#xff01;具有良好的可读和便于快速编写的特性。 2. Json与XML的比较 JSON和XML的数据可读性基本相同; JSON和XML同样拥有丰富的…

手动访问mongo和ES插入和查询

1、手动访问mongo 1.1、mongo连接数据库 1.2、mongo插入和查询 db.hmf_test.insert( { "aoeId": "1", "aoeAes": "吴秀梅", "aoeSm4": "北京xx网络技术有限公司.", "aoeSm4_a": "…

构建可扩展的Java Web应用架构

构建可扩展的Java Web应用架构 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在现代软件开发中&#xff0c;可扩展性是一个至关重要的概念。构建一个可扩展的…

2pc 3pc

2pc&3pc问题 本质&#xff1a; 2pcTM超时机制 3pc加入事务询问机制RM超时机制 事务询问机制&#xff1a;减少阻塞 RM超时机制&#xff1a;避免死锁 2pc 3pc 参考&#xff1a; https://juejin.im/post/5aa3c7736fb9a028bb189bca#heading-1 https://blog.csdn.net/xj1…

Spring Boot 文件上传和下载指南:从基础到进阶

文章目录 引言1. 环境配置2. 文件上传2.1 配置文件上传路径2.2 创建上传服务2.3 创建上传控制器 3. 文件下载3.1 创建下载服务3.2 创建下载控制器 4. 前端页面4.1 文件上传页面4.2 文件下载页面 5. 技术分析结论 &#x1f389;欢迎来到SpringBoot框架学习专栏~ ☆* o(≧▽≦)o …

Java并发编程中的常见陷阱及解决方案

Java并发编程中的常见陷阱及解决方案 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在Java编程中&#xff0c;并发编程是一项高级技能&#xff0c;能够显著提…

iOS多target时怎么对InfoPlist进行国际化

由于不同target要显示不同的App名称、不同的权限提示语&#xff0c;国际化InfoPlist文件必须创建名称为InfoPlist.strings的文件&#xff0c;那么多个target时怎么进行国际化呢&#xff1f;步骤如下&#xff1a; 一、首先我们在项目根目录创建不同的文件夹对应多个不同的targe…

1-2 什么是自然语言处理

1-2 什么是自然语言处理 主目录点这里 自然语言处理是计算机学科、人工智能与语言学领域的一个交叉学科&#xff0c;主要研究如何让计算机能够理解、处理、生成和模拟人类语言的能力&#xff0c;从而实现与人类进行自然语言对话的能力。 如上图&#xff0c;你好通过自然语言处…

笔记:SpringBoot+Vue全栈开发

笔记&#xff1a;SpringBootVue全栈开发 1. 开发环境热部署2. SpringBoot RestController的使用3. SpringBoot实现文件上传4. 配置拦截器5. Restful服务Swagger6. 使用MyBatis-Plus进行数据库操作7. 多表查询、条件查询及分页查询 1. 开发环境热部署 使用spring-boot-devtools…

opencv第一课-cnblog

opencv第一课 创建窗口 import timeimport cv2 #创建窗口 cv2.namedWindow(window,cv2.WINDOW_NORMAL)#cv2.WINDOW_AUTOSIZE自动大小&#xff0c;不允许修改窗口大小#更改窗口的大小 cv2.resizeWindow(window,800,600)#展示名字为window的窗口 cv2.imshow(window,0)key cv2.w…

MATLAB模拟数字签名过程

在 MATLAB 中实现数字签名和验证,我们使用 MATLAB 的 java.security 包提供的功能。 以下是一个示例代码,用于生成和验证数字签名。 % MATLAB Digital Signature and Verification% Generate a key pair (public and private keys) import java.security.* keyGen = KeyPai…

vue中如何使用echarts和echarts-gl实现三维折线图和三维柱状图

一、vue中使用三维折线图 效果图&#xff1a; 二、使用步骤 1.引入库 安装echarts 在package.json文件中添加 "dependencies": {"echarts": "^5.1.2""echarts-gl": "^1.1.1",// "echarts-gl": "^2.0.8…

『古籍自有答案』古风H5案例赏析

「古籍自有答案」&#xff0c;一部由新京报与字节跳动公益联合打造的古风H5&#xff0c;以诗意盎然的开篇引领用户穿梭于千年文脉。 part1. 创意定位 "人生有惑问先贤&#xff0c;先贤答案存古籍"&#xff0c;在这里&#xff0c;每一个灵魂的探问&#xff0c;都能在…

拥抱 AGI:PieDataCS 引领云原生数据计算系统新范式

自2023年后&#xff0c;人工智能技术进入了一个更为成熟和广泛应用的阶段&#xff0c;人工通用智能&#xff08;AGI&#xff09;这一概念也成为了科技界和产业界热议的焦点。本文将结合 AGI 时代背景&#xff0c;从架构设计到落地实践&#xff0c;详细介绍拓数派云原生数据计算…

中职院校专业群的生成机制研究

摘要&#xff1a; 随着国内产业升级转型步伐的加快和职业教育质量提升的要求&#xff0c;中等职业院校&#xff08;中职院校&#xff09;的专业群建设成为促进教育与产业深度融合、实现内涵式发展的关键。本文采用案例分析法&#xff0c;探讨中职院校专业群生成机制&#xff0c…

Linux手动安装JDK1.8

1、下载要安装的jdk安装包文件 官网下载地址&#xff1a;https://www.oracle.com/cn/java/technologies/downloads/ 2、上传jdk安装包至要安装服务器 3、在要安装jdk位置使用命令解压安装包 安装路径: /usr/local/java 解压安装包&#xff0c;解压命令 tar -zxvf /install…

前端面试项目细节重难点(十)(已工作|做分享)

面试官&#xff1a;现场出需求&#xff1a;我想让一个左侧盒子可以进行拉伸、缩小、展示或隐藏这些功能&#xff0c;你会如何实现&#xff1f; 答&#xff1a;&#xff08;1&#xff09;分析问题&#xff1a;其实&#xff0c;我听到这个问题后&#xff1a; 我的第一种想法&am…

【架构设计】-- ACK 机制

1、ACK 机制的定义 ACK&#xff08;全称&#xff1a;acknowledgement&#xff09; 机制是一种确认机制&#xff0c;起源于TCP报文到达确认&#xff08;ACK&#xff09;机制&#xff08;参考&#xff1a;TCP报文到达确认&#xff08;ACK&#xff09;机制_tcp接收方在收到一个报文…

Linux关于文件的高级命令

tree命令 tree命令用于以树状图的形式显示目录结构。它可以帮助用户快速了解目录和文件的层次关系&#xff0c;非常适合用于浏览和理解大型文件系统的结构。 基础用法 显示当前目录的树状结构&#xff1a;tree 显示指定目录的树状结构&#xff1a;tree 指定目录路径 tree命…