21.数据类型总结
目录
一.异常TODO
万能捕捉异常公式
try:
# 逻辑代码
1/0
except Exception as e:
print(e)
division by zero
二、深浅拷贝
拷贝/浅拷贝/深拷贝都是针对可变类型数据而言的
2.1拷贝
l1 = ['a','b','c',['d','e','f']]
l2 = l1
l1.append('g')
print(l1)
print(l2)
# ['a', 'b', 'c', ['d', 'e', 'f'], 'g']
# ['a', 'b', 'c', ['d', 'e', 'f'], 'g']
如果l2是l1的拷贝对象,则l1内部的任何数据类型的元素变化,则l2内部的元素也会跟着改变,因为可变类型值变id不变
2.2 浅拷贝
import copy
l1 = ['a','b','c',['d','e','f']]
l2 = copy.copy(l1)
l1.append('g')
print(l1)
print(l2)
l1[3].append('g')
print(l1)
print(l2)
# ['a', 'b', 'c', ['d', 'e', 'f'], 'g']
# ['a', 'b', 'c', ['d', 'e', 'f']]
# ['a', 'b', 'c', ['d', 'e', 'f', 'g'], 'g']
# ['a', 'b', 'c', ['d', 'e', 'f', 'g']]
如果l2是l1的浅拷贝对象,则l1内的不可变元素发生了改变,l2不变;如果l1内的可变元素发生了改变,则l2会跟着改变
2.3 深拷贝
import copy
l1 = ['a','b','c',['d','e','f']]
l2 = copy.deepcopy(l1)
l1.append('g')
print(l1)
print(l2)
l1[3].append('g')
print(l1)
print(l2)
# ['a', 'b', 'c', ['d', 'e', 'f'], 'g']
# ['a', 'b', 'c', ['d', 'e', 'f']]
# ['a', 'b', 'c', ['d', 'e', 'f', 'g'], 'g']
# ['a', 'b', 'c', ['d', 'e', 'f']]
如果l2是l1的深拷贝对象,则l1内的不可变元素发生了改变,l2不变;如果l1内的可变元素发生了改变,l2也不会变,即l2永远不会因为l1的变化而变化
三、数据类型内置方法
3.1 数字类型内置方法
详情见博客:数字类型内置方法
3.1.1 整型
- 用途:用于定义年龄/身高/体重/id号
- 定义方式:
age = 18
age = int('18')
- 方法: 算术运算,比较运算
+ - * / % // **
- 多个值or一个值:一个值
- 有序or无序:压根没有有序无序这一说
- 可变or不可变:不可变
3.1.2 浮点型
- 作用:定义薪资/价格
- 定义方式:
salary = 3.2
salary = float('3.2')
- 方法: 算术运算,比较运算
+ - * / % // **
- 多个值or一个值:一个值
- 有序or无序:压根没有有序无序这一说
- 可变or不可变:不可变
3.2 字符串类型内置方法
详情见博客:字符串内置方法
name1 = "lwx"
name2 = '''
lwx
lwx
'''
print(name1)
#执行结果:
# lwx
print(name2)
#执行结果:
# lwx
# lwx
3.2.1方法
- 优先掌握
- 索引取值
- 切片
- 长度
- 切分split
- 除两边空白strip
- 成员运算in not in
- for循环
- 需要掌握
- lstrip/rstrip:左/右除空白
- rsplit:从右开始切割
- upper/lower:大写/小写
- startstwith/endswith:以某开头/以某结尾
- join:连接列表为字符串
- replace:替换字符
- isdigit:判断是否为数字
- 了解
- find/rfind/index/rindex/count:查找/从右开始查找/索引结果/从右开始索引结果/计数
- center/ljust/rjust/zfill:居中填充/居左填充/居右填充/填充0
- expantabs:扩展tab键
- capitalize/swapcase/title:大写/大小写转换/首字母大写
- is系列:略
- 多个值or一个值:一个值
- 有序or无序:有序
- 可变or不可变:不可变
3.3 列表类型内置方法
详情见博客:列表类型内置方法
info = ['LWX','handsome','18']
lis = list('abcd')
print(info)
print(lis)
#执行结果:
# ['LWX', 'handsome', '18']
# ['a', 'b', 'c', 'd']
3.3.1 方法
- 方法
- 优先掌握
- 索引取值(即可取又可改)
- 切片
- 长度
- append
- 成员运算
- for循环
- 需要掌握
- count:元素个数计数
- remove:移除元素
- reverse:反转列表
- pop:删除元素
- insert:插入元素
- sort:列表排序
- index:索引元素
- del:删除元素
- extend:扩展列表
- clear:清除列表
- 优先掌握
- 多个值or一个值:多个值
- 有序or无序:有序
- 可变or不可变:可变
3.4 元祖类型内置方法
详情见博客:元祖类型内置方法
info = ('LWX','handsome','18')
tup = tuple('abcd')
print(info)
print(tup)
#执行结果:
# ('LWX', 'handsome', '18')
# ('a', 'b', 'c', 'd')
3.4.1 方法
- 方法
- 优先掌握
- 索引取值(无法更改)
- 切片
- 长度
- 成员运算
- for循环
- count:元素个数计数
- index:元素位置索引
- 优先掌握
- 多个值or一个值:多个值
- 有序or无序:有序
- 可变or不可变:无可变不可变这一说
3.5 字典类型内置方法
详情见博客:字典类型内置方法
lwx_info_dict = {
'name':'lwx',
'age':18,
'weight':120,
'hobby_list':['read','run','music','fishing','programming','coding','debugging']
}
for k,v in lwx_info_dict.items():
print(k,v)
#执行结果:
# name lwx
# age 18
# weight 120
# hobby_list ['read', 'run', 'music', 'fishing', 'programming', 'coding', 'debugging']
3.5.1 方法
- 方法
- 优先掌握
- 按键取值
- 长度
- keys/values/items
- for循环
- 成员运算
- 需要掌握
- pop:删除元素
- fromkeys:由一个列表生成一个字典,默认值为None
- setdefault:有指定key不会改变值;无指定key则改变值
- get:通过key获取value,无key默认获取None
- update:扩展字典
- del:删除字典键值对
- 优先掌握
- 多个值or一个值:多个值
- 有序or无序:无序
- 可变or不可变:可变
3.6 集合类型内置方法
s = set()
s2 = {1,2,3,4,5,1}
print(s,type(s))
print(s2)
#执行结果:
# set() <class 'set'>
# {1, 2, 3, 4, 5}
3.6.1方法
- 方法
- 优先掌握
- 去重
- 并集 |
- 交集 &
- 差集 -
- 对称差集 ^
- 父集 >&emsp;>=
- 子集 <&emsp;<=
==
- 需要掌握
- add:添加元素
- difference_update:更新该集合没有的元素
- isdisjoint:如果两个元素交集为空返回True,否则返回False
- remove:移除元素 # 值不存在会报错
- discard :移除元素 # 不会报错
- 优先掌握
- 多个值or一个值:多个值
- 有序or无序:无序
- 可变or不可变:可变
3.7 布尔类型
print(type(True))
print(True)
#执行结果
#<class 'bool'>
#True
- 作用:用于条件判断
- 定义:Ture,False通常情况下不会直接使用,需要使用逻辑运算得到结果
- 方法
#代码:
print(bool(0))
print(bool('lwx'))
print(bool(1>2))
print(bool(1==1))
#结果:
False
True
False
True
注意:Python中所以的数据类型的值自带布尔值,如此多的数据类型只需要记住只有0和none,空,False的布尔值为False,其余的为Ture
#代码:
print(bool(0))
print(bool(None))
print(bool(''))
print(bool([]))
print(bool({}))
print(bool(False))
#结果:
False
False
False
False
False
False
四、数据类型分类
4.1 按值个数
一个值 | 多个值 |
---|---|
数字类型/字符串 | 列表/元祖/字典/集合 |
4.2 按有序无序
有序 | 无序 |
---|---|
列表/元祖//字符串 | 数字类型/集合/字典 |
4.3 按可变不可变
可变 | 不可变 |
---|---|
列表/字典/集合 | 数字类型/字符串 |