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版本之后,对字典做了优化,存储数据的时候用哈希算法,但是数据拿出来的时候,系统会重新按照
  定义字典时的顺序进行排序,所以字典便面上有序,实际上无序
 """