文章目录
Python的六大标准数据类型
- Number 数字类型(int float bool complex)
- String 字符串类型
- List 列表类型
- Tuple 元组类型
- Set 集合类型
- Dict 字典类型
其中str list tuple set dict统称容器类型数据
Number 数字类型分类
int : 整数类型
(正整数[各种进制] 负整数 0)
intvar = -15
print(intvar)
intvar = 0
print(intvar)
# type 用来获取变量的类型
# id 用来获取变量所指向那个值的地址
res = type(intvar)
print(res)
print(type(intvar))
print(id(intvar))
-
表达二进制整型
intvar = 0b011 print(intvar) print(type(intvar)) print(id(intvar))
-
表达八进制整型
intvar = 0o13 print(intvar) print(type(intvar)) print(id(intvar))
-
表达十六进制整型
intvar = 0xFF print(intvar) print(type(intvar)) print(id(intvar))
float: 浮点数类型
-
表达形式一: 普通小数
floatvar = 3.14 print(floatvar) # 获取类型 print(type(floatvar)) # 获取地址 print(id(floatvar))
-
表达形式二: 科学计数法
floatvar = 4.13e-3 print(floatvar) floatvar = 5.55e4 print(floatvar) #55500.0
bool : 布尔值类型
(真True和假False)
boolvar = True
print(boolvar)
boolvar = False
print(boolvar)
print(type(boolvar))
print(id(boolvar))
complex: 复数类型
(复数用作于科学计算中,表示高精度的数据,科学家会使用)
-
表达方式一
complexvar = 5+6j complexvar = 3-2j print(complexvar) print(type(complexvar)) print(id(complexvar))
-
表达方式二
# complex(实部,虚部) res = complex(14,-2) print(res)
string 字符串类型
用引号引起来的就是字符串
三种引号: 单引号 双引号 三引号
特征:可获取 不可修改 有序
转义字符: \
-
把有意义的字符变得无意义
-
将无意义的字符变得有意义
\n 或者 \r\n : 换行
\t 一个缩进 (水平制表符)
\r : 将\r后面的所有字符拉倒当前行首
单引号表达字符串
strvar = '今天天气好晴朗哦'
print(strvar)
print(type(strvar))
双引号表达字符串
strvar = "手拿\n小灵通"
print(strvar)
strvar = "走在\t风雨中"
print(strvar)
strvar = "左\r\n手换右手"
print(strvar)
strvar = "右手\r打不通"
print(strvar)
strvar = "右\n手\r打不通"
print(strvar)
strvar = "走在'冷'风中" # 类似于注释的用法,如果外面是双引号,里面需要单引号,反之亦然.
print(strvar)
strvar = "走在\"冷\"风中" # 硬要使用双引号 使用\ 进行转义
print(strvar)
三引号表达字符串
(三引号的字符串支持跨行)
strvar = '''
轻轻的我走了,
正如我轻轻的来
'''
print(strvar)
strvar = """
我轻轻的'挥一挥'衣袖,
不带"走一片"云彩,
"""
print(strvar)
元字符串
元字符串可以让转义字符失效
strvar = r"本来\n无一物"
print(strvar)
strvar = r"C:\Windows\appcompat\nabc"
print(strvar)
字符串的格式化
%d %f %s
语法: “字符串” % (实际值)
- %d 占位符 代表整型
strvar = "何键翰买了%d个充气娃娃" % (3)
print(strvar)
# %2d 占2位,默认字符居右,用空格补位
strvar = "黄文买了%d本相对论" % (3)
print(strvar)
strvar = "黄文买了%4d本相对论" % (3)
print(strvar)
# %-4d 占4位,默认字符居左,用空格补位
strvar = "黄文买了%-4d本相对论" % (3)
print(strvar)
- %f 占位符 代表浮点型 默认保留6位小数点
strvar = "今天大白菜%f一斤" % (2.35)
print(strvar)
# %.2f 保留2位小数 存在四舍五入的情况
strvar = "今天大白菜%.2f一斤" % (2.354)
print(strvar)
- %s 占位符 代表字符串
strvar = "%s" % ("易思")
print(strvar)
- 综合案例: 参数按照顺序一一写入
strvar = "郑璐今天发工资一共%.2f元,买了%d量布加迪威龙,心情%s" % (999.129,10,"爽爆了")
print(strvar)
(6) 字符串的获取
# 获取字符串当中的元素 可以使用下标
tuplevar = "罗婷是咱们班唯一一个美女"
res = tuplevar[-2]
print(res)
# 修改行不行? 不行
# tuplevar[-2] = "恶" error
list 列表类型
定义一个空列表
特征:可获取,可修改,有序
listvar = []
print(listvar)
print(type(listvar))
列表的获取
通过下标获取对应值
# 0 1 2 3 4 5 正向下标
listvar = ["明天", 2, 3.33, True, False, 3 - 2j]
# -6 -5 -4 -3 -2 -1 逆向下标
print(listvar)
res = listvar[3]
print(res)
# 能够通过逆向下标瞬间得到列表里面的最后一个值
# res <==> result
res = listvar[-1]
print(res)
# 获取列表最后一个值 ,通用做法
# len 获取列表的长度(元素的个数)
lengthvar = len(listvar)
print(lengthvar)
res2 = lengthvar - 1
print(res2)
print(listvar[res2])
# 简写
print(listvar[len(listvar) -1 ])
列表的修改
listvar[3] = "20190425"
print(listvar)
tuple 元组类型
定义一个空元组
特征:可获取 不可修改 有序
tuplevar = ()
print(tuplevar,type(tuplevar))
# 见证是不是元组,取决于逗号, 但是声明空元祖时可以使用()
tuplevar = ("sdf",)
print(tuplevar,type(tuplevar))
获取元组中的数据
# 获取元组中的数据
tuplevar = ('刘五星', '朱思华', '熊卫华', '马俊强')
print(tuplevar)
print(tuplevar[2])
print(tuplevar[-1])
# 是否可以修改元组中的值? 不允许
# tuplevar[0] = 1 error
set集合类型
定义一个空集合
特征: 自动去重 无序 不能获取 不能修改
setvar = set() # set() 强制转换成一个空集合的数据类型
print(setvar,type(setvar))
setvar = {'刘德华', '张学友', '郭富城', '王文'}
print(setvar)
不能修改
# 集合不能够修改或者获取其中的数据
# 是否可以获取集合当中的值? 不行
setvar[1] # error
# 是否可以修改集合当中的值? 不行
setvar[1] = 123 # error
集合能够自动去重
setvar = {'刘德华', '张学友', '郭富城', '王文', '王文'}
print(setvar)
dict 字典类型
定义一个空字典
特征: 键值对存储的数据 无序 可获取 可修改
dictvar = {}
print(dictvar,type(dictvar))
获取字典当中的值
# 他是有键值对存储的数据,冒号左边的是键,右边的是值,键值对之间用逗号隔开.
dictvar = {
'top': '盘古',
'middle': '甄姬',
'bottom': '李元芳',
'jungle': '李白',
'support': '蔡文姬'}
print(dictvar)
# 获取字典当中的值
res = dictvar["bottom"]
print(res)
修改字典当中的值
dictvar['middle'] = "王昭君"
print(dictvar)
字典键的命名
一般在命名字典的键时,推荐使用字符串,按照变量命名的字符串.
# 以下命名语法成立,但不推荐
dictvar = {1: 111, 3.14: 222, False: 2323,
3 + 4j: 555, '123': 666, (1, 2, 3): 888}
print(dictvar)
哈希算法
定义:
把不可变的任意长度值计算成固定长度的唯一值,这个值可正可负,可大可小,但长度固定
该算法叫哈希算法,这个固定长度值叫哈希值
特点:
哈希过的数据存储时,是一个随机存放的散列,并不是按照次序依次存放的,
所以通过哈希算法存储数据的速度较快.
查找:
字典的键就是按照哈希算法算出来的,可以通过该键找散列中的对应值,形成映射关系
集合中的值也是通过哈希算法计算后存储的
所以集合,字典本质上无序
版本:
3.6版本之前都是无序的
3.6版本之后,把字典的字面顺序记录下来,当从内存拿数据的时候,根据字面顺序重新排序,所以看起来像有序,但本质上无序
可哈希数据:
可哈希的数据 (不可变的数据):Number(int float bool complex) str tuple
不可哈希的数据 (可变的数据): list set dict
自动类型转换
(针对于Number数据类型来说的)
当2个不同类型的数据进行运算的时候,默认向更高精度转换
数据类型精度从低到高:
bool -> int -> float -> complex
# True 转化成整型是1 False 转化成整型是0
# bool + int
res = True + 1
print(res)
# bool + float
res = True + 4.14
print(res)
# bool + complex
res = False + 3j
print(res)
# int + float
# 本质上存在精度损耗,因为小数的二进制在内存中是无限循环没有终止,一般进行截取15~18位
res = 5 + 6.88
print(res)
# int + complex
res = 2 + (4 + 2j)
print(res)
# float + complex
res = 3.55 + (-4 - 2j)
print(res)