Python的数据类型
什么是数据类型?
数据类型是指数据种类、数据表现形式,比如ganyu就是一个字符串,200就是一个数字
目录
常用的数据类型
1、字符串类型(str)
1.1、字符串类型-大字符串
2、数字类型整形(int)
2.1、数字类型-复数(complex)
2.2、数字类型-布尔类型(bool)
3、列表类型(list)
4、元组类型(tuple)
5、字典类型(Dict)
6、集合类型(set)
数据类型总结
数据类型转换
自动类型转换
强制类型转换
容器类型转换
常用的数据类型
1、字符串类型(str)
aaa = 'ganyu'
hello = '你好'
bbb = 'ganyu ganyu'
print(aaa, hello, bbb)
1.1、字符串类型-大字符串
s='''
ganyu。。。。。。。
。。。。。。。。。。
。。。。。。。。。。
。。。。。。。。。。
'''
#如果'''单独使用,是注释的意思,如果前面有变量,则变为大字符串
rea=type(s)
print(s,rea)
2、数字类型整形(int)
ganyu = 1
sganyu = -1
ganyu1 = 3.1111
ganyu2 = 0x10 # 十六进制
ganyu3 = b'001100111' # 二进制
print(ganyu, type(ganyu), sganyu, type(sganyu), ganyu1, type(ganyu1), ganyu2, type(ganyu2)) # 正负都为整型,小数为浮点类型
2.1、数字类型-复数(complex)
ganyu4 = 5 + 6j
print(ganyu4, type(ganyu4))
2.2、数字类型-布尔类型(bool)
ganyu5 = True # True,区分大小写,早期python的时候,0表示假,1表示真
ganyu6 = False
print(ganyu5, type(ganyu5), ganyu6, type(ganyu6))
3、列表类型(list)
列表用来表示一系列数据,例如:需要记录一组数字、一组字母或者其他数据
在需要记录多个数据时,可以使用中括号进行定义,并且每个数据之间需要使用逗号进行分割
varlist=[100,0x20,-300,3.14]#定义了多组数字,列表中间存储的数据可以是任意类型,且列表中的每一组数据称为元素
print(varlist)
print(varlist,type(varlist))
那么如何获取列表中的数字呢?
#如果定义多组数据
[100,0x20,-300,3.14]
列表中存储的数据可以通过下标的方式获取
'''
0 1 2 3
[100,0x20,-300,3.14]
-4 -3 -2 -1
'''
#按顺序读取,100对应的是0,0x20对应的是1
#按倒序读取,100对应的是-4,0x20对应的是-3
varlist=[100,0x20,-300,3.14]
print(varlist[3],varlist[-1])
列表中的元素可以存储一个列表,称为二级列表或者多级列表或者多维列表
''' 0 1 2 3 4 5 6 [1,2,3,[11,22,33],'a','b','c'] -7-6-5 -4 -3 -2 -1 #按顺序读取,1对应的是0,[11,22,33]对应的是3 #按倒序读取,1对应的是-7,[11,22,33]对应的是-4 0 1 2 [11,22,33] #而小列表中,11对应的是0,22对应的是1 '''
varlist=[1,2,3,[11,22,33],'a','b','c']
print(varlist[3])
print(varlist[3][1])
4、元组类型(tuple)
在定义多个数据时,可以选择使用List列表类型 ,还可以使用元组类型来定义,元组和列表都是用于存储多个数据时使用,非常类似
列表使用中括号进行,元组使用小括号进行定义
区别:
元组的值无法改变
列表的值可以改变的
ganyu = (1, 2, 3, 'a', 'b')
print(ganyu, type(ganyu))
print(ganyu[3])
注意在定义元组时,如果元组中只有一个元素,那么需要加逗号,不然定义的就不是元组tuple,如下
ganyu1 = (1)
ganyu2 = (1,)
ganyu3 = (0x20)
print(type(ganyu1), type(ganyu2), type(ganyu3))
分别输出<class 'int'>、 <class 'tuple'>、 <class 'int'>
元组的其他定义方式
ganyu4 = 1, 2, 3, 4
print(ganyu4, type(ganyu4)) # 一样将内容识为数组
列表与元组的区别
列表使用中括号定义,元组使用小括号定义
列表中的值可以被改变,元组中的值不可以被改变,各有好处,如果在开发过程中,想让数组随时发生改变即可用列表,如果一定不要改变,则可以用元组
5、字典类型(Dict)
字典也是用于存储一组或多组数据时使用,使用大括号来定义
字典是(键值对)的存储方式,如:name:ganyu
键和值之间使用冒号分隔(:),多组键值对之间使用逗号分隔 (,)
键必须是字符串或数字类型,值可以是任意类型
键名不能重复,值可以重复
如记录一本书的信息
vard = {'name': '<<yshen>>', 'user': 'ganyu', 'money': '50'}
print(vard, type(vard))
获取字典中的值
print(vard['name'])
字典中的值可以重复,但是键不能重复(会被覆盖)
vard={'a':'10','b':'20','a':'ganyu'}
print(vard)
6、集合类型(set)
集合使用中括号或者set()方法来定义,是一个无序且元素不重复的集合的数据类型
varb = {1, 2, 3, 'a', 'b', 1} # 值无法被重复
varc = set('123456')
print(varb, type(varb))
print(varc, type(varc))
如果需要定义一个空集合的时候,只能使用set()方法,因为大括号是定义空字典
vardd = {}
varde = set()
print(vardd, type(vardd), varde, type(varde))
集合主要用于运算,交集,差集,并集,对称集合
a = {1, 2, 3, 'a', 'b'}
b = {1, 'a', 1000, 2000}
# 交集
print(a & b)
# 差集
print(a - b) # a集合有,b集合没有的
# 并集
print(a | b) # 两个集合放到一起,并且去重
# 对称差集
print(a ^ b)
数据类型总结
可变数据类型:列表、字典、集合
不可变数据类型:字符串、数字、元组
容器类型数据;字符串、列表、元组、集合、字典
非容器类型数据:数字、布尔
数据类型转换
什么是数据类型转换?
将数据(变量、数值、表达式的结果等)从一种类型转换为另一种类型
为什么需要数据类型转换?作用?
因为不同的数据类型之间不能运算
数据类型转换的形式?
自动类型转换
强制类型转换
# 自动类型转换
a = 123
b = True
print(a + b) # 在做数字运算时 True为数字1,False为数字0,所以当a等于123时,b等于True时候,123+1结果为124
print(12.5 + 22) # 12.5为浮点类型,22为int类型,
print(True + 3.14)
# 强制类型转换
'''
str()
int()
float()
bool()
list()
tuple()
dict()
set()
'''
# 定义a、b、c、d、e、f、g
a = 123
b = 3.14
c = True
d = [1, 2, 3]
e = (22, 33)
f = {11, 22}
g = {'a': 1, 'b': 2}
ganyu = str(a)
ganyu2 = str(c)
ganyu3 = str(e)
ganyu4 = str(g)
print(ganyu, type(ganyu))
print(ganyu2, type(ganyu2))
print(ganyu3, type(ganyu3))
print(ganyu4, type(ganyu4))
# 可以把所有其他数据类型转换为字符串类型
# 字符串转整形
# 注意:无法转换字符串,但是如果字符串是纯数字,可以转换,其他容器类型都不行
# 测试如下
h = 'love'
i = '123'
# j=int(h)
# print(h,type(j))
k = int(i)
print(k, type(k))
# 浮点类型的转换和int类型一样,不过转换的结果依旧是浮点类型
l = 3
m = float(l)
print(m, type(m))
# bool可以吧其他类型转换为布尔类型的True和False
n = '0'
o = bool(n)
print(o, type(o))
容器类型转换
# 容器类型数据转换
'''
list 列表
'''
# 字符串转换为列表时会把字符串中的每一个字符当做列表的元素
a = '123'
b = 'iloveyou'
ganyu1 = list(a)
ganyu2 = list(b)
print(a, type(a), ganyu1, type(ganyu1), ganyu2, type(ganyu2))
# 数字类型是非容器类型,不能转化为列表
# c = 123
# ganyu3 = list(c)
# print(ganyu3, type(ganyu3))
# 集合可以转化为list列表类型
# 元组可以转化为list列表类型
# 字典可以转化为list列表类型,只保留了字典中的键
d = ['1', '2', '3']
e = (1, 2, 3)
f = {'name': 'ysheng', 'color': 'red'}
ganyu4 = list(d)
ganyu5 = list(e)
ganyu6 = list(f)
print(d, type(d), ganyu4, type(ganyu4))
print(e, type(e), ganyu5, type(ganyu5))
print(f, type(f), ganyu6, type(ganyu6))
'''
tuple 元组
'''
# 数字类型非容器类型,不能转换为元组
# g = 123
# ganyu5 = tuple(g)
# print(g, type(g), ganyu5, type(ganyu5))
h = 'iloveyou'
i = ['1', '2', '3']
j = (1, 2, 3)
k = {'name': 'ysheng', 'color': 'red'}
ganyu6 = tuple(h)
ganyu7 = tuple(i)
ganyu8 = tuple(j)
ganyu9 = tuple(k)
print(h, type(h), ganyu6, type(ganyu6))
print(i, type(i), ganyu7, type(ganyu7))
print(j, type(j), ganyu8, type(ganyu8))
print(k, type(k), ganyu9, type(ganyu9))
'''
set() 集合
'''
# 数字类型非容器类型,不能转换为集合
# l = 123
# ganyu10 = set(l)
# print(l, type(l), ganyu5, type(ganyu5))
m = 'iloveyou'
n = ['1', '2', '3']
o = (1, 2, 3)
p = {'name': 'ysheng', 'color': 'red'}
ganyu11 = set(m)
ganyu12 = set(n)
ganyu13 = set(o)
ganyu14 = set(p)
print(m, type(m), ganyu11, type(ganyu11))
print(n, type(n), ganyu12, type(ganyu12))
print(o, type(o), ganyu13, type(ganyu13))
print(p, type(p), ganyu14, type(ganyu14))
'''
dict 字典
'''
# 数字类型非容器类型,不能转换为字典
# q = 123
# ganyu15 = dict(q)
# print(q, type(q), ganyu15, type(ganyu15))
# 字符串类型不能转换为字典
# r = 'iloveyou'
# ganyu15 = dict(r)
# print(r, type(r), ganyu15, type(ganyu15))
# 列表类型不能转换为字典
# s = ['1','2','3']
# ganyu16 = dict(s)
# print(s, type(s), ganyu16, type(ganyu16))
# 元组类型不能转换为字典
# t = (1, 2, 3)
# ganyu17 = dict(t)
# print(t, type(t), ganyu17, type(ganyu17))
# 二级列表类型可以转换为字典,但是必须为二级列表,且必须每组两个元素
# 二级元组类型可以转换为字典,但是必须为二级列表,且必须每组两个元素
s = [['1', '2'], ['3', '4'], ['5', '6']]
ganyu16 = dict(s)
print(s, type(s), ganyu16, type(ganyu16))
t = (('1', '2'), ('3', '4'), ('5', '6'))
ganyu17 = dict(t)
print(t, type(t), ganyu17, type(ganyu17))