Python的数据类型
数字类型数据: Number (int float bool complex)
1. int 整型 (正整数 0 负整数)
intvar = 123
print(intvar)
# type 获取值的类型
res = type(intvar)
print(res)
# id 获取值的地址
res = id(intvar)
print(res)
# 二进制整型
intvar = 0o1234
print(intvar)
print( type(intvar) )
print( id(intvar) )
# 八进制整型
intvar = 0b1234
print(intvar)
print( type(intvar) )
print( id(intvar) )
# 十六进制整型
intvar = 0x10101
var1 = 65793
print(intvar)
print( id(intvar) , id(var1) )
print( type(intvar) )
2. float 浮点型(小数)
# 表达方式1:
floatvar = 1.12
print(floatvar)
print( type(floatvar) )
# 表达方式2:(科学计数法)
floatvar = 1.2e3
print(floatvar)
print( type(floatvar) )
3. bool 布尔型
# True 真 False 假 只有这两个值
boolvar = True
boolvar = False
print(boolvar)
print( type(boolvar) )
4. complex 复数
# complex -> 实数 + 虚数
# 3 + 2j
# j: 如果有一个数,它的平方是-1,那么这个数是j,表达的是高精度的类型
# 表达方式1:
complexvar = 12-5j
complexvar = -8j
print(complexvar)
print( type(complexvar) )
# 表达方式2:
# 语法: complex (实数 , 虚数)
complexvar = complex(12,-5)
print(complexvar)
print( type(complexvar) )
容器类型数据: (str list tuple set dict)
1.字符串 str
# 定义:用引号引起来的就是字符串
# 特点:可获取,不可修改,有序
# 正向下标索引 0 1 2 3 4 5 6 7 8 9
strvar = 把你的心我的心串一串
# 逆向下标索引 -10-9-8-7-6-5-4-3-2-1
转义字符: \ + 某个字符
1.将有意义的字符变得无意义
2.将无意义的字符变得有意义
\n , \r\n : 换行
\t : tab缩进(水平制表符)[一个缩进是4个空格的距离]
\r : 将后面的字符直接拉到当前行行首并替换原有的字符
# 1.单引号引起来的字符串
strvar = '今天开课第二天'
print(strvar)
print( type(strvar) )
# 2.双引号引起来的字符串
# 将无意义的字符变得有意义
strvar = "古天乐是这个世界上,\n我认为最棒的男人"
strvar = "古天乐是这个世界上,\r\n我认为最棒的男人"
strvar = "古天乐是这个世界上,我认\t为最 棒的男人"
strvar = "古天乐是这个世界上,\r我认为最棒的男人"
strvar = "古天乐是这个世界上,\n我认为\r最棒的男人"
# 将有意义的字符变得无意义
strvar = "成龙是这个世界上,浑身冒\"金光的\"男人"
print(strvar)
print(type(strvar))
# 3.三引号引起来的字符串 ''' """(支持跨行的效果)
strvar = '''
今天天气晴朗,非常适合出去游玩
我们现在就出发吧
'''
print(strvar)
print( type(strvar) )
# 4.元字符串 r "字符串"是不转义字符,原型化输出字符串
strvar = r"F:\nython31\tay2"
print(strvar)
# 5.格式化字符串
"""
语法 : "字符串"%(值1,值2,值3)
%d 整型占位符
%f 浮点型占位符
%s 字符串占位符
"""
# %d 整型占位符
strvar = "天气太热了,小明买了%d根雪糕" %(2)
print(strvar)
# %2d 占两位,原字符串默认居右
strvar = "小红今年%d岁"%(8)
print(strvar)
strvar = "小红今年%2d岁"%(8)
print(strvar)
# %-2d 占两位,原字符串默认居左
strvar = "小红今年%-2d岁"%(8)
print(strvar)
# %f 浮点型占位符
strvar = "小慧去超市花了%f元"%(32.5)
print(strvar)
# %.2f 小数点保留两位
strvar = "小慧去超市花了%.2f元"%(32.5)
print(strvar)
# %f 存在四舍五入的情况
strvar = "小慧去超市花了%.1f元"%(32.56)
print(strvar)
# %s 字符串占位符
strvar = "%s"%("今天天气真好")
print(strvar)
# 综合案例
strvar = "%s去逛超市,买了%d袋好吃的,花了%.2f元" % ("小红",2,105.35)
print(strvar)
# 可以全部使用%s占位符取代%d和%f
strvar = "%s去逛超市,买了%s袋好吃的,花了%s元" % ("小红",2,105.35)
2. list 列表
# 特点: 可获取,可修改,有序
# 定义一个空列表
listvar = []
print( listvar , type(listvar) )
# 定义一个普通列表
# 正向下标索引 0 1 2 3 4
listvar = [111,22.56,True,2+4j,"小明"]
# 逆向下标索引 -5 -4 -3 -2 -1
print(listvar)
# 1.获取列表中的值
res = listvar[3]
res = listvar[-2]
print(res)
# 获取列表中最后一个元素
# python 特有
print(listvar[-1])
# 通用写法
"""
len 获取容器类型数据的长度(元素总个数)
"""
res = len(listvar)
print(res)
res = listvar[res - 1]
print(res)
# 简写
print(listvar[len(listvar) - 1])
# 2. 修改列表中的元素
listvar[2] = False
print(listvar)
3. tuple 元组
# 特点: 可获取,不可修改,有序
# 定义一个空元组
tuplevar = ()
print(tuplevar , type(tuplevar))
# 定义一个普通元组
# 正向下标索引 0 1 2 3
tuplevar = ("小明","小红","小慧","小兰")
# 逆向下标索引 -4 -3 -2 -1
# 1. 获取元组中的元素
res = tuplevar[2]
res = tuplevar[-4]
print(res)
# 2. 元组中的值不能修改
# tuplevar[-4] = "小东" error
# 3. 判断元组的方法
""" 逗号是区分是否是元组的标识符 """
tuplevar = (1234,)
tuplevar = 1234,
print(tuplevar , type(tuplevar))
4. 集合 set
# 作用: 集合之间的交叉并补
# 特点: 无序,自动去重
# 1.集合无序: 集合中的元素不可获取,不可修改
# 2.自动去重 (定义一个集合)
setvar = {"刘德华","古天乐","华晨宇","潘长江","古天乐","古天乐"}
print(setvar)
# 3.定义一个空集合
# setvar = {} error
setvar = ()
print(setvar , type(setvar))
5. 字典 dict
# 特点: 键值对存储的数据,表面上有序,实际上无序
# 语法: {键1:值1,键2:值2,键3:值3...}
# 1.定义一个空字典
dictvar = {}
print(dictvar , type(dictvar))
# 2.定义一个普通字典
dictvar = {"豹子头":"林冲","花和尚":"鲁智深","母夜叉":"孙二娘","鼓上蚤":"时迁"}
# 3.获取字典中的值
res = dictvar["母夜叉"]
print(res)
# 4.修改字典中的值
dictvar["花和尚"] = "李逵"
print(dictvar)
# 字典中的'键'和集合中的'值'对数据类型有要求
dictvar = {111:"aaa",True:"bbb",4+2j:"ccc",3.14:"ddd",(1,3,5,7):"eee","你好":"111","hello":"小明"}
print(dictvar)
"""
字典中的'键'和集合中的'值'对数据类型的要求有如下几点:
允许类型: 不可改变的数据类型(可哈希的数据类型)
Number: int float bool complex
容器类型数据: str tuple
不允许类型: 可变的数据类型(不可哈希的数据类型)
容器类型数据: list set dict
哈希算法 -> 典型的无序特征
目的: 为了更加均匀的把数据分配到内存当中,底层用的算法是取模
python3.6版本之后,对字典做了优化,存储数据的时候用哈希算法,但是数据拿出来的时候,系统会重新按照
定义字典时的顺序进行排序,所以字典便面上有序,实际上无序
"""