Python3数据类型转换魔法(函数)

目录

文章目录

概述

有时候,我们需要对数据内置的类型进行转换,数据类型的转换,你只需要将数据类型作为函数名即可。以下几个内置的函数可以执行数据类型之间的转换。这些函数返回一个新的对象,表示转换的值。

Python3数据类型转换魔法(函数)

1. int(__x,base)函数
说明:将某些字符串(形态一致)、整型数字、浮点型数字转换为整型数字。

base表示进制数,默认十进制。

#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#

g="35"  #字符串
a="35.23"  #字符串
b=50   #整型
c=3.14 #浮点型
d=""   #空字符串
e=0    #整型
f=None  #空值

print("转换前g:",type(g),g)
#进行转换g
g=int(g) #这种字符串,能转成整型
print("转换后g:",type(g),g)


print("转换前a:",type(a),a)
# #进行转换a
# a=int(a) #有小数点的字符串,不能转成整型,这里要报错
# print("转换后a:",type(a),a)

print("转换前b:",type(b),b)
#进行转换b
b=int(b)
print("转换后b:",type(b),b)


print("转换前c:",type(c),c)
#进行转换c
c=int(c)
print("转换后c:",type(c),c)

print("转换前d:",type(d),d)
# #进行转换d
# d=int(d)  #空字符串,不能转成整型,这里要报错
# print("转换后d:",type(d),d)

print("转换前e:",type(e),e)
#进行转换e
e=int(e)
print("转换后e:",type(e),e)

print("转换前f:",type(f),f)
#进行转换f
# e=int(f)   #空值,不能转成整型,这里要报错
# print("转换后f:",type(f),f)


yue=2000
cunkuan="1000"
#print("存款后,余额为:",yue+cunkuan) #直接这样执行会报错,必须先将字符串类型变量转换为int类型变量
print("存款后,余额为:",yue+int(cunkuan))

运行结果如下:

转换前g: <class 'str'> 35
转换后g: <class 'int'> 35
转换前a: <class 'str'> 35.23
转换前b: <class 'int'> 50
转换后b: <class 'int'> 50
转换前c: <class 'float'> 3.14
转换后c: <class 'int'> 3
转换前d: <class 'str'> 
转换前e: <class 'int'> 0
转换后e: <class 'int'> 0
转换前f: <class 'NoneType'> None
存款后,余额为: 3000
说明:将某些字符串(形态一致)以某个进制转换为十进制
#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#

test="a"
print(type(test),test)
b=int(test)
print(type(b),b)

注意: 运行时会报错,不能将包含字母或者的字符串直接转换为十进制数字
运行结果如下:

<class 'str'> a
Traceback (most recent call last):
  File "E:/softwares/python/pythonProject/day20200802/helloWorld.py", line 8, in <module>
    b=int(test) #把test以16进制的形式转换为10进制
ValueError: invalid literal for int() with base 10: 'a'

魔法如果是带参数base的话,a要以字符串的形式进行输入,a为16进制的10

#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#

#test="a"
test="0xa"
print(type(test),test)
b=int(test,base=16) #把a以16进制的形式转换为10进制
print(type(b),b)

注意:这个时候运行时不会报错,因为“a”在16进制表示10进制数字10

运行结果如下:

<class 'str'> 0xa
<class 'int'> 10
2. float(__x)函数
说明:将整数、浮点数和某些字符串(形态一致)转换成浮点数。
#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#


a="35.23"  #字符串
b=50   #整型
c=3.14 #浮点型
d=""   #空字符串
e=0    #整型
f=None  #空值

print("转换前a:",type(a),a)
#进行转换a
a=float(a)
print("转换后a:",type(a),a)

print("转换前b:",type(b),b)
#进行转换b
b=float(b)
print("转换后b:",type(b),b)


print("转换前c:",type(c),c)
#进行转换c
c=float(c)
print("转换后c:",type(c),c)


print("转换前e:",type(e),e)
#进行转换e
e=float(e)
print("转换后e:",type(e),e)


print("转换前d:",type(d),d)
# #进行转换d
# d=float(d)  #空字符串,不能转成浮点型,这里要报错
# print("转换后d:",type(d),d)

print("转换前f:",type(f),f)
# #进行转换f
# e=float(f)   #空值,不能转成浮点型,这里要报错
# print("转换后f:",type(f),f)

运行结果如下:

转换前a: <class 'str'> 35.23
转换后a: <class 'float'> 35.23
转换前b: <class 'int'> 50
转换后b: <class 'float'> 50.0
转换前c: <class 'float'> 3.14
转换后c: <class 'float'> 3.14
转换前e: <class 'int'> 0
转换后e: <class 'float'> 0.0
转换前d: <class 'str'> 
转换前f: <class 'NoneType'> None
3. bool(__x)函数
说明:将整数、浮点数、空字符串转换成布尔型。
#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#


a="35.23"  #字符串
b=50   #整型
c=3.14 #浮点型
d=""   #空字符串
e=0    #整型
f=None  #空值

print("转换前a:",type(a),a)
#进行转换a
a=bool(a)
print("转换后a:",type(a),a)

print("转换前b:",type(b),b)
#进行转换b
b=bool(b)
print("转换后b:",type(b),b)

print("转换前c:",type(c),c)
#进行转换c
c=bool(c)
print("转换后c:",type(c),c)

print("转换前d:",type(d),d)
#进行转换d
d=bool(d)  #空字符串,可以转成布尔型,但布尔值为False
print("转换后d:",type(d),d)

print("转换前e:",type(e),e)
#进行转换e
e=bool(e)
print("转换后e:",type(e),e)

print("转换前f:",type(f),f)
#进行转换f
e=bool(f)   #空值,不能转成布尔型,但是这里不会报错
print("转换后f:",type(f),f)

运行结果如下:

转换前a: <class 'str'> 35.23
转换后a: <class 'bool'> True
转换前b: <class 'int'> 50
转换后b: <class 'bool'> True
转换前c: <class 'float'> 3.14
转换后c: <class 'bool'> True
转换前d: <class 'str'> 
转换后d: <class 'bool'> False
转换前e: <class 'int'> 0
转换后e: <class 'bool'> False
转换前f: <class 'NoneType'> None
转换后f: <class 'NoneType'> None
4. complex(__x)函数
说明:创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。。

real可以是int, long, float或字符串;
imag 指定int, long, float;

#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#


test=10
print(type(test),test)
b=complex(test)
print(type(b),b)

test="15"
print(type(test),test)
b=complex(test)
print(type(b),b)

test="1+2j"   #注意:这个地方在"+"号两边不能有空格,也就是不能写成"1 + 2j",应该是"1+2j",否则会报错
print(type(test),test)
b=complex(test)
print(type(b),b)

运行结果如下:

<class 'str'> 15
<class 'complex'> (15+0j)
<class 'str'> 1+2j
<class 'complex'> (1+2j)
5.str(__obj)函数
说明:返回一个对象的string格式。将对象转化为适于人阅读的形式。

obj可以是字符串、元祖、列表、字典等对象。

#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#

g="35"  #字符串
a="35.23"  #字符串
b=50   #整型
c=3.14 #浮点型
d=""   #空字符串
e=0    #整型
f=None  #空值

print("转换前g:",type(g),g)
#进行转换g
g=str(g) #这种字符串,能转成整型
print("转换后g:",type(g),g)


print("转换前a:",type(a),a)
#进行转换a
a=str(a) #有小数点的字符串,不能转成整型,这里要报错
print("转换后a:",type(a),a)

print("转换前b:",type(b),b)
#进行转换b
b=str(b)
print("转换后b:",type(b),b)


print("转换前c:",type(c),c)
#进行转换c
c=str(c)
print("转换后c:",type(c),c)

print("转换前d:",type(d),d)
#进行转换d
d=str(d)  #空字符串,能转成字符串类型
print("转换后d:",type(d),d)

print("转换前e:",type(e),e)
#进行转换e
e=str(e)
print("转换后e:",type(e),e)

print("转换前f:",type(f),f)
# #进行转换f
# e=str(f)   #空值,不能转成字符串类型,但这里不会报错
# print("转换后f:",type(f),f)

运行结果如下:

转换前g: <class 'str'> 35
转换后g: <class 'str'> 35
转换前a: <class 'str'> 35.23
转换后a: <class 'str'> 35.23
转换前b: <class 'int'> 50
转换后b: <class 'str'> 50
转换前c: <class 'float'> 3.14
转换后c: <class 'str'> 3.14
转换前d: <class 'str'> 
转换后d: <class 'str'> 
转换前e: <class 'int'> 0
转换后e: <class 'str'> 0
转换前f: <class 'NoneType'> None
6. repr(__obj)函数
说明:返回一个对象的 string 格式。 将对象转化为供解释器读取的形式。

obj可以是字符串、元祖、列表、字典等对象。

#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#


test="kdkdngtr"
print(type(test),test)
b=repr(test)
print(type(b),b)

test={'name': 'baidu.com', 'email': 'google.com'}
print(type(test),test)
b=repr(test)
print(type(b),b)

运行结果如下:

<class 'str'> kdkdngtr
<class 'str'> kdkdngtr
<class 'dict'> {'name': 'baidu.com', 'email': 'google.com'}
<class 'str'> {'name': 'baidu.com', 'email': 'google.com'}
7. repr(__source,__globals,__locals)函数
说明:用来执行一个字符串表达式,并返回表达式的值。返回表达式计算结果。

expression – 表达式。
globals – 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
locals – 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。

#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#


x=7
y=eval("3*x")
print(type(y),y)

y=eval("pow(2,3)")
print(type(y),y)

y=eval("2+2")
print(type(y),y)

运行结果如下:

<class 'int'> 21
<class 'int'> 8
<class 'int'> 4
8. tuple(iterable)函数
说明:将可迭代系列(如字符串,列表,字典,集合)转换为元组。

iterable – 要转换为元组的可迭代序列。

#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#

test="abcdef"
print(type(test),test)
result=tuple(test)
print(type(result),result)

test=['Google', 'Taobao', 'sina', 'Baidu']
print(type(test),test)
result=tuple(test)
print(type(result),result)

test={'我', '是', '小', '红'}
print(type(test),test)
result=tuple(test)
print(type(result),result)

test={'name': 'yuki', 'email': 'qq.com'}
print(type(test),test)
result=tuple(test)  # 将字典转换为元组时,只保留键!
print(type(result),result)

运行结果如下:

<class 'str'> abcdef
<class 'tuple'> ('a', 'b', 'c', 'd', 'e', 'f')
<class 'list'> ['Google', 'Taobao', 'sina', 'Baidu']
<class 'tuple'> ('Google', 'Taobao', 'sina', 'Baidu')
<class 'set'> {'是', '小', '红', '我'}
<class 'tuple'> ('是', '小', '红', '我')
<class 'dict'> {'name': 'yuki', 'email': 'qq.com'}
<class 'tuple'> ('name', 'email')
9. list(seq)函数
说明:将元组或字符串转换为列表。

注:元组与列表是非常类似的,区别在于元组的元素值不能修改,元组是放在小括号中,列表是放于方(中)括号中。
seq – 要转换为列表的元组或字符串。

#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#

test="abcdef"
print(type(test),test)
result=list(test)
print(type(result),result)

test=('Google', 'Taobao', 'sina', 'Baidu')
print(type(test),test)
result=list(test)
print(type(result),result)

运行结果如下:

<class 'str'> abcdef
<class 'list'> ['a', 'b', 'c', 'd', 'e', 'f']
<class 'tuple'> ('Google', 'Taobao', 'sina', 'Baidu')
<class 'list'> ['Google', 'Taobao', 'sina', 'Baidu']
10. set([iterable])函数
说明:创建一个无序不重复元素集何,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。

iterable – 可迭代对象对象。

#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#



test="abcdef"
print(type(test),test)
set1=set(test)
print(type(set1),set1)

test="edscdgpop"
print(type(test),test)
set2=set(test)
print(type(set2),set2)

mixed_set=set1&set2   #交集
print(type(mixed_set),mixed_set)

sum_set=set1|set2
print(type(sum_set),sum_set)  #并集

dif_seta=set1-set2
print(type(dif_seta),dif_seta)  #差集

dif_setb=set2-set1
print(type(dif_setb),dif_setb)  #差集

运行结果如下:

<class 'str'> abcdef
<class 'set'> {'e', 'b', 'd', 'c', 'a', 'f'}
<class 'str'> edscdgpop
<class 'set'> {'p', 'e', 'o', 'g', 'd', 'c', 's'}
<class 'set'> {'e', 'd', 'c'}
<class 'set'> {'p', 'e', 'o', 'b', 'g', 'd', 'a', 'c', 'f', 's'}
<class 'set'> {'b', 'f', 'a'}
<class 'set'> {'p', 'g', 's', 'o'}
11. dict()函数
说明:用于创建一个字典。

**kwargs – 关键字
mapping – 元素的容器。
iterable – 可迭代对象。

#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#



result=dict()    #不传参的时候默认创建空字典
print(type(result),result)

x="yuki"
y="123456@qq.com"
z=18
result=dict(name=x,email=y,age=z)
print(type(result),result)

result=dict(zip(['name','email','age'],[x,y,z]))    # 映射函数方式来构造字典
print(type(result),result)

result=dict([('name',x),('email',y),('age',z)]) # 可迭代对象方式来构造字典
print(type(result),result)

运行结果如下:

<class 'dict'> {}
<class 'dict'> {'name': 'yuki', 'email': '123456@qq.com', 'age': 18}
<class 'dict'> {'name': 'yuki', 'email': '123456@qq.com', 'age': 18}
<class 'dict'> {'name': 'yuki', 'email': '123456@qq.com', 'age': 18}
12. frozenset([iterable])函数
说明:返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。

iterable – 可迭代的对象,比如字符串、列表、字典、元组等等。
返回新的 frozenset 对象,如果不提供任何参数,默认会生成空集合。

#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#

#test=[2, 3, 4, 5, 6, 7, 8, 9]   #list列表
#test=(2, 3, 4, 5, 6, 7, 8, 9)    #tuple元祖
test=range(2,10)  #range前闭后开区间
print(type(test),test)
result=frozenset(test)
print(type(result),result)


test="abcdefgddd"
print(type(test),test)
result=frozenset(test)
print(type(result),result)

运行结果如下:

<class 'range'> range(2, 10)
<class 'frozenset'> frozenset({2, 3, 4, 5, 6, 7, 8, 9})
<class 'str'> abcdefgddd
<class 'frozenset'> frozenset({'g', 'c', 'f', 'a', 'b', 'e', 'd'})
13. chr(__i)函数
说明:用一个范围在 range(256)内的(就是0~255)整数作参数,返回值是当前整数对应的 ASCII 字符。

i – 可以是10进制也可以是16进制的形式的数字。

#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#

print("-----10进制-----")
test=0
result=chr(test)
print(result)

test=1
result=chr(test)
print(result)

test=48
result=chr(test)
print(result)

test=49
result=chr(test)
print(result)

test=97
result=chr(test)
print(result)

print("-----16进制-----")
test=0x30
result=chr(test)
print(result)

test=0x31
result=chr(test)
print(result)

test=0x61
result=chr(test)
print(result)

运行结果如下:

-----10进制-----
 

0
1
a
-----16进制-----
0
1
a
14. ord(__c)函数
说明:将一个字符转换为它的整数值。返回值是对应的十进制整数。

c – 字符。
ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常。

#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#


test=""
result=ord(test)
print(result)

test="a"
result=ord(test)
print(result)


test="b"
result=ord(test)
print(result)

test="A"
result=ord(test)
print(result)

运行结果如下:

1
97
98
65
15. hex(__x) 函数
说明:将10进制整数转换成16进制,以字符串形式表示。

x – 10进制整数

#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#


test=1
result=hex(test)
print(type(result),result)


test=10
result=hex(test)
print(type(result),result)

test=11
result=hex(test)
print(type(result),result)

运行结果如下:

<class 'str'> 0x1
<class 'str'> 0xa
<class 'str'> 0xb
16. oct(__x) 函数
说明:将一个整数转换成 8 进制字符串。

x – 整数。
Python2.x 版本的 8 进制以 0 作为前缀表示。
Python3.x 版本的 8 进制以 0o 作为前缀表示。

#!/usr/bin/python
# -*- coding:utf-8 -*-
# created by yuki
#


test=1
result=oct(test)
print(type(result),result)

test=10
result=oct(test)
print(type(result),result)

运行结果如下:

<class 'str'> 0o1
<class 'str'> 0o12
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值