python基本数据内置方法(完)
目录
引言
小伙伴们,昨天我们已经讲了一部分的基本数据类型内置方法了,今天让我们继续探索剩下的数据类型的内置方法吧,冲冲冲!!!

字典
给大家回顾一下字典的定义吧,字典是花括号里面有一个或多个元素,元素之间用逗号隔开,里面的每个元素都是一个键值对。键必须是不可变类型的,由于键主要是用于描述值的,常见用字符串。值可以是任意的数据类型。
类型转换
字典中的类型转换也可以称作字典的新创建方式。
dict_one = dict[['name', 'king'], ['age', 18], ['gender', 'male'], ['hobby', 'game']]
dict_two = dict(name='king', age=18, gender='male', hobby='game')
按key取值
字典中的值只能通过键来获取。
dict_three = {'name': 'king', 'age': 18, 'gender': 'male', 'hobby': 'game'}
dict_three['name'] # king
dict_three['country'] # 报错,因此我们一般取值不用key取值
get方法取值
如果取值时字典中没有我们想要的键,那么就要能够不报错,使用get就能很好的做到这一点,还可以自己设置没有键时返回的字符串。
dict_three = {'name': 'king', 'age': 18, 'gender': 'male', 'hobby': 'game'}
dict_three.get('name') # king
dict_three.get('country') # None 默认为None
dict_three.get('country', '没有该数据') # 没有该数据
修改值
dict_three = {'name': 'king', 'age': 18, 'gender': 'male', 'hobby': 'game'}
dict_three['name'] = 'mill' # 如果键存在,那么就是修改字典中键所指向的值
新增键值对
dict_three = {'name': 'king', 'age': 18, 'gender': 'male', 'hobby': 'game'}
dict_three['country'] = 'China' # 如果键不存在,那么就是新增键值对

长度
用于计数字典中键值对的个数。
dict_three = {'name': 'king', 'age': 18, 'gender': 'male', 'hobby': 'game'}
print(len(dict_three)) # 4
成员运算符
dict_three = {'name': 'king', 'age': 18, 'gender': 'male', 'hobby': 'game'}
print('name' in dict_three) # True 只能判断键
删除
dict_three = {'name': 'king', 'age': 18, 'gender': 'male', 'hobby': 'game'}
del dict_three['name'] # 通用删除
dict_three.pop('age') # 弹出指定的键所对应的值,弹出的值可以使用,当不使用了,python会自动帮你删除
dict_three.popitem() # 随即弹出一个
取出所有元素
dict_three = {'name': 'king', 'age': 18, 'gender': 'male', 'hobby': 'game'}
print(dict_three.values()) # dict_values(['king', 18, 'male', 'game']) 取出所有值,可以看成是列表
print(dict_three.keys()) # dict_keys(['name', 'age', 'gender', 'hobby']) 取出所有值,可以看成是列表
print(dict_three.items()) # dict_items([('name', 'king'), ('age', 18), ('gender', 'male'), ('hobby', 'game')]) 取出所有的键值对,可以看成是列表
update
dict_three = {'name': 'king', 'age': 18, 'gender': 'male', 'hobby': 'game'}
dict_three.update('name': 'mill', 'country': 'China') # 键存在就是修改值,键不存在新增键值对
fromkeys()
dict_three = dict.fromkeys(['k1', 'k2', 'k3'], []) # {'k1': [], 'k2': [], 'k3': []}
'''
注意了,这里面一个键所对的列表添加一个元素,其他的键所对应的列表也添加相同的元素,因为这三个键所对的值是同一个列表。
setdefault()
dic = {'k1': 111, 'k2': 222}
dic.setdefault('k3': 333} # 如果键不存在,在字典中新增一个键值对,并且返回新增的值
dic.setdefault('k1': 444} # 如果键存在,字典不变,返回字典中键对应的值

元组
元组的定义是小括号内有一个或多个元素,元素之间用逗号隔开,元素正常情况下只能看不能改。如果只有一个元素,那元素之后一定要加个逗号,不然小括号会被认为是包含的作用。
类型转换
元组的类型转换只能转换支持for循环的。
tuple('dsasads') # ('d', 's', 'a', 's', 'a', 'd', 's')
tuple({1,2,3,4,5,6}) # (1, 2, 3, 4, 5, 6)
tuple([1,2,3,45,6]) # (1, 2, 3, 45, 6)
tuple({'name': 'king'}) # ('name',)
基本操作
基本操作基本和列表没区别,这里直接代码展示算了。
set_one = (1, 3, 7, 8, 9, 12, 15, 78, 99, 1)
set_one[0] # 1
set_one[1:3] # (3, 7)
set_one[1:8:2] # (3, 8, 12, 78)
len(set_one) # 9
print(1 in set_one) # True
set_one.count(1) # 2
set_one[0] = 2 # 报错,元组中的元素正常情况下只能看不能改
集合
集合的定义,集合是花括号内一个或多个元素,只不过这个元素不是键值对,元素可以是任意数据类型,集合是无序不重复的序列。到目前为止我们可以这样子理解,带花括号的都是无序序列。
类型转换
集合的类型转换只能转换能被for循环的数据类型。
set({'name':'king') # {'name',}
set((1, 2, 3, 4, 5, 6, 7)) # {1, 2, 3, 4, 5, 6, 7}
set('sdadaads') # {'d', 's', 'a'}
set([1,5,6,8,4]) # {1, 4, 5, 6, 8}
关系运算
f1 = {'king', 'tom', 'jack', 'fake'}
f2 = {'jason', 'kiven', 'jack', 'tom'}
# 共同好友
print(f1 & f2) # {'jack', 'tom'}
# f1独有的好友
print(f1 - f2) # {'king', 'fake'}
# 全部好友
print(f1 | f2) # {'king', 'kiven', 'tom', 'jack', 'fake', 'jason'}
# 各自好友
print(f1 ^ f2) # {'fake', 'jason', 'king', 'kiven'}

垃圾回收机制
python底层对空间的申请和释放都是设计好的,不需要程序员自己动手。
引用计数
python会将引用计数为0的数据清除,计数就是内存中数据绑定的变量名的个数。
标记清除
当内存空间快溢出的时候,python就自动启动应急机制。停止程序的运行,挨个检查值的引用计数,找出计数为0的值,一次性清理掉。
分代回收
根据值存在时间长短分为3个层(1,2,3)。
第一层 每5秒钟系统自动检测一次
第二层 每1分钟系统自动检测一次
第三层 每5分钟系统自动检测一次
