003.Python数据类型转换
一 自动类型转换
(针对于Number类型) bool float int complex
当Number不同的数据类型进行运算的时候,默认向更高精度转化
精度从低到高顺序:bool -> int -> float ->complex
True 默认转化是1
False 默认转化是0
# (1) bool + int
res = True + 89
print(res) # (2) bool + float
res = True + 55.78
print(res) # (3) bool + complex
res = False + 2-4j
print(res) # (4) int + float
res = 31 + 4.1
print(res) # (5) int + complex
res = 17 + 4-7j
print(res) # (6) float + complex
res = 8.12 + 3+5j
print(res)
[root@node10 python]# python3 test.py
90
56.78
(2-4j)
35.1
(21-7j)
(11.12+5j)
二 强制类型转换
Number => (int float bool complex)
2.1 把数据强制转换成整型 int
(整型 浮点型 布尔类型 纯数字字符串)
var1 = 13
var2 = 99.99
var3 = True
var3_1 = False
var4 = 4+1j
var5 = "123321"
var6 = "你好123" res = int(var2)
# True 强转整型是1 False 强转整型是0
res = int(var3)
print(res,type(res))
res = int(var3_1)
print(res)
res = int(var5)
print(res,type(res))
[root@node10 python]# python3 test.py
1 <class 'int'>
0
123321 <class 'int'>
字符型字符串不能转化
var1 = 13
var2 = 99.99
var3 = True
var3_1 = False
var4 = 4+1j
var5 = "123321"
var6 = "你好123" res = int(var6)
print(res,type(res))
[root@node10 python]# python3 test.py
Traceback (most recent call last):
File "test.py", line 9, in <module>
res = int(var6)
ValueError: invalid literal for int() with base 10: '你好123'
2.2 float (整型 浮点型 布尔类型 纯数字字符串)
var1 = 13
var2 = 99.99
var3 = True
var3_1 = False
var4 = 4+1j
var5 = "123321"
var6 = "你好123" res = float(var1)
print(res)
res = float(var3) # 加上.0 成为小数
print(res)
res = float(var3_1) # 0.0
print(res)
res = float(var5) #123321.0
print(res)
[root@node10 python]# python3 test.py
13.0
1.0
0.0
123321.0
[root@node10 python]# python3 test.py
var1 = 13
var2 = 99.99
var3 = True
var3_1 = False
var4 = 4+1j
var5 = "123321"
var6 = "你好123" res = float(var4) #can't convert complex to float
print(res)
[root@node10 python]# python3 test.py
Traceback (most recent call last):
File "test.py", line 9, in <module>
res = float(var4) #can't convert complex to float
TypeError: can't convert complex to float
complex (整型 浮点型 布尔类型 纯数字字符串 复数)
var1 = 13
var2 = 99.99
var3 = True
var3_1 = False
var4 = 4+1j
var5 = "123321"
var6 = "你好123" res = complex(var1) # 13 + 0j
print(res)
res = complex(var2) #(99.99+0j)
print(res)
res = complex(var3) #(1+0j)
print(res)
res = complex(var3_1) #0j
print(res)
res = complex(var5) #(123321+0j)
print(res)
[root@node10 python]# python3 test.py
(13+0j)
(99.99+0j)
(1+0j)
0j
(123321+0j)
2.3 bool类型
( 容器类型数据 / Number类型数据 都可以,要么True要么False)
布尔类型为假的十种情况: 0,0.0,False,0j,"",[],(),set(),{},None None 是系统的一个关键字 表示空的,什么也没有,一般做初始值
var1 = 13
var2 = 99.99
var3 = True
var3_1 = False
var4 = 4+1j
var5 = "123321"
var6 = "你好123" res = bool(var6)
print(res,type(res))
res = bool(var4)
print(res,type(res))
res = bool([1,2,3])
print("<!!!>")
print(res)
res = None
print(res,type(res))
[root@node10 python]# python3 test.py
True <class 'bool'>
True <class 'bool'>
<!!!>
True
None <class 'NoneType'>
三 容器类型数据的强制类型转换
(str list tuple set dict)
3.1 str 强转成字符串类型
( 容器类型数据 / Number类型数据 都可以 )
字符串强转规律: 就是单纯的在原数据的两侧加上引号
var1 = "快乐每一天"
var2 = [1,2,3]
var3 = (4,5,6)
var4 = {"美丽","店铺名个人"}
var5 = {"a":1,"b":2,"c":3}
var6 = 123 res = str(var2)
print(repr(res),type(res))
res = str(var3)
print(repr(res),type(res))
res = str(var5)
print(repr(res),type(res))
res = str(var6)
# print(res,type(res))
# repr 以字符串形式原型化输出数据 (想看到引号用repr转化)
print(repr(res),type(res))
[root@node10 python]# python3 test.py
'[1, 2, 3]' <class 'str'>
'(4, 5, 6)' <class 'str'>
"{'a': 1, 'b': 2, 'c': 3}" <class 'str'>
'123' <class 'str'>
3.2 list 列表
list 列表强转规律:
如果是字符串:把字符串中的每一个字符当成新的元素放到列表中,如果是其他数据:就是单纯的把原标识符换成[]
var1 = "快乐每一天"
var2 = [1,2,3]
var3 = (4,5,6)
var4 = {"美丽","店铺名个人"}
var5 = {"a":1,"b":2,"c":3}
var6 = 123 res = list(var1) #['快', '乐', '每', '一', '天']
print(res)
res = list(var3)
print(res)
res = list(var4)
print(res)
res = list(var5) #['a', 'b', 'c'] 强转字典时,保留键,舍去值
# res = list(var6) # error
print(res)
[root@node10 python]# python3 test.py
['快', '乐', '每', '一', '天']
[4, 5, 6]
['店铺名个人', '美丽']
['a', 'b', 'c']
3.3 tuple 元组
tuple 元组强转规律
如果是字符串:把字符串中的每一个字符当成新的元素放到元组中
如果是其他数据:就是单纯的把原标识符换成() 变成元组即可
var1 = "快乐每一天"
var2 = [1,2,3]
var3 = (4,5,6)
var4 = {"美丽","店铺名个人"}
var5 = {"a":1,"b":2,"c":3}
var6 = 123 res = tuple(var1) #('快', '乐', '每', '一', '天')
print(res)
res = tuple(var2)
print(res)
res = tuple(var5) #('a', 'b', 'c') #强转字典时,保留键,舍去值
print(res)
[root@node10 python]# python3 test.py
('快', '乐', '每', '一', '天')
(1, 2, 3)
('a', 'b', 'c')
3.4 set 集合
set 集合强转规律
- 如果是字符串:把字符串中的每一个字符当成新的元素放到集合中
- 如果是其他数据:就是单纯的把原标识符换成{} 变成集合即可
var1 = "快乐每一天"
var2 = [1,2,3]
var3 = (4,5,6)
var4 = {"美丽","店铺名个人"}
var5 = {"a":1,"b":2,"c":3}
var6 = 123 res = set(var1) #因为无序,字符串被打散
print(res)
res = set(var2) # {1,2,3}
print(res)
res = set(var5) #强转字典时,保留键,舍去值,键值顺序被打乱
print(res)
[root@node10 python]# python3 test.py
{'快', '每', '一', '乐', '天'}
{1, 2, 3}
{'c', 'a', 'b'}
过滤列表重复数据
listvar = [1,2,3,4,5,5,6,7,6]
container = set(listvar)
print(container)
container = list(container)
print(container,type(container))
[root@node10 python]# python3 test.py
{1, 2, 3, 4, 5, 6, 7}
[1, 2, 3, 4, 5, 6, 7] <class 'list'>
3.5 二级容器
外面是一个容器类型的数据,里面的元素还是一个容器类型数据
listvar = [1,2,3,(4,5,6)] # 二级容器
print(listvar)
[root@node10 python]# python3 test.py
[1, 2, 3, (4, 5, 6)]
二级元祖
tup = (3,5,(7,8,9))
print(tup)
[root@node10 python]# python3 test.py
(3, 5, (7, 8, 9))
二级集合 (只能存放元组)
setvar = {1,2,3,(11,22,33)}
print(setvar)
[root@node10 python]# python3 test.py
{1, 2, 3, (11, 22, 33)}
二级字典
dictvar = {'a':{'c':333},'b':2}
# 取出333
print(dictvar['a']['c'])
[root@node10 python]# python3 test.py
333
# 四级容器
container = [1,2,3,(4,5,6,{"a":1,"b":[7,8,9]}),90]
# 取出9
res = container[-2][-1]["b"][-1]
print(res)
[root@node10 python]# python3 test.py
9
等长的二级容器
(1) 里面每个元素都是容器类型数据
(2) 每个容器类型数据的元素个数都相同
container = [(1,2,3),[4,5,6]]
3.6 字典的强制类型转换
外面是列表,里面是列表或元组或字符串
listvar = [["a",1],("b",2),"c123"] # 字符串慎用 如果值是多个,有局限性
listvar = [["a",1],("b",2)] # 推荐 ***
res = dict(listvar)
print(res)
[root@node10 python]# python3 test.py
{'a': 1, 'b': 2}
外面是元组,里面是列表元组或字符串
tuplevar = (["c",11],("d",23)) # 推荐 ***
res = dict(tuplevar)
print(res)
[root@node10 python]# python3 test.py
{'c': 11, 'd': 23}
例外:如果往列表或者元组容器放集合,语法上不报错,但情况出乎意料,达不到想要效果
container = dict([{"a",1},{"b",2}]) # 不推荐使用
print(container)
[root@node10 python]# python3 test.py
{'a': 1, 'b': 2}
外面是集合,里面是元组或字符串
setvar = {('a',1),('b',2),"c3"} # 必须放入不可变数据,即可哈希
res = dict(setvar)
print(res)
[root@node10 python]# python3 test.py
{'b': 2, 'a': 1, 'c': '3'}
int() float() bool() complex()
str() list() tuple() set() dict()
这些函数在进行强转时,都默认转化成当前的数据类型
用这样的方式也可以初始化一个变量
res = int()
res = list()
print(res)
[root@node10 python]# python3 test.py
[]
003.Python数据类型转换的更多相关文章
- Python数据类型转换函数
数据类型转换函数 函 数 作 用 int(x) 将 x 转换成整数类型 float(x) 将 x 转换成浮点数类型 complex(real[,imag]) 创建一个复数 str(x) 将 x 转换为 ...
- 20.Python类型转换,Python数据类型转换函数大全
虽然 Python 是弱类型编程语言,不需要像 Java 或 C 语言那样还要在使用变量前声明变量的类型,但在一些特定场景中,仍然需要用到类型转换. 比如说,我们想通过使用 print() 函数输出信 ...
- day3 python数据类型转换及变量的缓存机制
类型转换 1,强制类型转换 1.1 number的转换(int,float,bool,complex) num1 = 10 num2 = 10.6 num3 = True num4 = 3 + 4j ...
- python数据类型转换&&格式化输出
①python的数据类型包含:数字.字符串.列表.元组.字典.集合这六种基本数据类型.不同数据类型的数据可以进行类型的转换. 使用input让用户输入的数据默认为字符串类型: name = input ...
- Python 数据类型转换
Python提供的基本数据类型主要有:布尔类型.整型.浮点型.字符串.列表.元组.集合.字典.日期等等 函数 描述 type(x) x的数据类型 ...
- Python数据类型转换
Python数据类型之间的转换 函数 描述 int(x [,base]) 将x转换为一个整数 long(x [,base] ) 将x转换为一个长整数 float(x) 将x转换到一个浮点数 compl ...
- Python基础 — 数据类型转换
Python 数据类型转换 有时候,我们需要对数据内置的内心进行转换,数据类型的转换,你只需要将数据类型作为函数名即可. 以下几个内置的函数可以执行数据类型之间的转换,这些函数返回一个新的对象,表示转 ...
- 第三十五节,json数据类型转换字符串模块
在使用json模块时需要先 import json 引入模块 json.dumps()模块函数 功能:将Python数据类型转换成字符串[有参] 使用方法:json.dumps(要转换的数据类型变量) ...
- Python基础学习笔记(九)常用数据类型转换函数
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-variable-types.html 3. http://www ...
随机推荐
- c# 输出一个数组
关于C#输出一个数组最普遍的方法就是用for 循环语句写 如: int[] a = new int[10];for (int i = 0; i < a.Length; i++) { a[i] = ...
- LeetCode剑指Offer刷题总结(一)
LeetCode过程中值得反思的细节 以下题号均指LeetCode剑指offer题库中的题号 本文章将每周定期更新,当内容达到10题左右时将会开下一节. 二维数组越界问题04 public stati ...
- 【Azure Redis 缓存 Azure Cache For Redis】Redis连接池
问题描述 Redis根据定价层说明,不同级别支持的连接数最多可达4万(同时),但是当短时间又大量连接请求建立的时候,Redis服务的服务压力非常大,到达100%.严重影响了高响应的要求.最严重时,经常 ...
- matlab通用命令
常用命令 命令 命令说明 cd 显示或改变当前文件夹 dir 显示当前文件夹或指定目录下的文件 clc 清除工作窗中的所有显示内容 home 将光标移至命令行窗口的最左上角 clf 清除图形窗口 ty ...
- 008-Java中方法的使用(进阶篇)
目录 一.方法的重载(overload) 一.什么是方法的重载 二.方法执行时的内存变化 一.JVM主要三块内存空间 二.关于栈的数据结构(如图) 三.方法执行过程内存变化(用以下代码演示) 三.方法 ...
- 一文完全掌握 Go math/rand
Go 获取随机数是开发中经常会用到的功能, 不过这个里面还是有一些坑存在的, 本文将完全剖析 Go math/rand, 让你轻松使用 Go Rand. 开篇一问: 你觉得 rand 会 panic ...
- ASP.NET CORE使用WebUploader对大文件分片上传,并通过ASP.NET CORE SignalR实时反馈后台处理进度给前端展示
本次,我们来实现一个单个大文件上传,并且把后台对上传文件的处理进度通过ASP.NET CORE SignalR反馈给前端展示,比如上传一个大的zip压缩包文件,后台进行解压缩,并且对压缩包中的文件进行 ...
- poj1182 and 携程预赛2第一题 带权并查集
题意: 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底 ...
- javaScript的成长之路【何为函数,面向对象又是啥!!!】
- ERROR: Pool overlaps with other one on this address space
出现问题 配置了两个不同的docker-compose.yml,使用了相同的网段,导致了在运行第二个yml文件时命令行报错目标网段已存在,报错如下: Creating network "v2 ...