笔记目录
列表的相关操作列表的拼接(同元组)列表的重复 (同元组)列表的切片 (同元组)列表的获取 (同元组)列表的修改 (可切片)列表的删除 ( 可切片 )列表的相关函数append()insert()extend()pop()remove()clear()index()count()sort()reverse()深拷贝 与浅拷贝浅拷贝深拷贝字典的相关函数 (增删改查)fromkeys()pop()popitem()clear()update()get()keys()values()items()集合相关操作 (交差并补)intersection() 交集difference() 差集union() 并集symmetric_difference() 对称差集 (补集情况涵盖在其中)issubset() 判断是否是子集issuperset() 判断是否是父集isdisjoint() 检测两集合是否不相交 不相交 True 相交False集合相关函数add() 向集合中添加数据update() 迭代着增加 update(可迭代性数据)clear() 清空集合pop() 随机删除集合中的一个数据remove() 删除集合中指定的值(不存在则报错)discard() 删除集合中指定的值(不存在的不删除 推荐使用)冰冻集合声明空的冰冻集合列表的相关操作
列表的拼接(同元组)
lst_1 = [1, 2, 3]lst_2 = [4, 5, 6]lst_3 = lst_1 + lst_2print(lst_3)
列表的重复 (同元组)
lst_1 = ['please', 'don\'t', 'go']res = lst_1 * 3print(res)
列表的切片 (同元组)
语法 => 列表[::] 完整格式:[开始索引:结束索引:间隔值]
[开始索引:] 从开始索引截取到列表的最后
istvar = ['布里吉塔', '禅雅塔', '安娜', '天使', '末日铁拳', '士兵76', '死神', '查莉雅', '温斯顿']res = listvar[3:]print(res)
[:结束索引] 从开头截取到结束索引之前(结束索引-1)
res = listvar[:-3]print(res)
[开始索引:结束索引] 从开始索引截取到结束索引之前(结束索引-1)
res = listvar[1:4]print(res)
[开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔截取列表元素值
res = listvar[::2]print(res)res = listvar[2:6:3]print(res)res = listvar[-4:1:-1]print(res)
[:]或[::] 截取所有列表
res = listvar[::]print(res)
列表的获取 (同元组)
listvar = ['黑影', '半藏', '源氏', '莱因哈特', '卢西奥']res = listvar[-2]print(res)
列表的修改 (可切片)
listvar = ['黑影', '半藏', '源氏', '莱因哈特', '卢西奥']listvar[:2] = ['莫伊拉', '巴蒂斯特', '破坏球']print(listvar)# 带有步长的列表修改*** (切掉几个,填充几个,一一对应)listvar[::3] = ['狂鼠', '黑百合']print(listvar)# 在列表进行切片修改的时候,右侧的值需要iterable ( 可迭代性数据 => 容器类型数据 range对象 迭代器)listvar[::2] = range(2)print(listvar)
列表的删除 ( 可切片 )
使用del 关键字 实现删除操作
listvar = ['黑影', '半藏', '源氏', '莱因哈特', '卢西奥']del listvar[1:4]print(listvar)
列表的相关函数
增加的操作append insert extend
删除操作pop remove clear
改 查可以看上一节 的相关操作
append()
功能:向列表的末尾添加新的元素
格式:列表.append(值)
返回值:None
注意:新添加的值在列表的末尾,该函数直接操作原有列表
listvar = ['前田敦子', '大岛优子', '篠田麻里子', '高桥南', '柏木由纪', '渡边麻友', '小嶋阳菜']listvar.append('指原莉乃')print(listvar)
insert()
功能:在指定索引之前插入元素
格式:列表.insert(索引,值)
返回值:None
注意:直接改变原有列表
listvar = ['前田敦子', '大岛优子', '篠田麻里子', '高桥南', '柏木由纪', '渡边麻友', '小嶋阳菜']listvar.insert(3, '北原里英')print(listvar)
extend()
功能:迭代追加所有元素
格式:列表.extend(可迭代性数据)
返回值:None
注意:直接改变原有列表
listvar.extend(['高城亚树', '松井珠理奈', '松井玲奈'])print(listvar)
pop()
功能:通过指定索引删除元素,若没有索引移除最后那个
格式:列表.pop(索引)
返回值:删除的元素
(注意:没有指定索引,默认移除最后一个元素 )
res = listvar.pop()print(res, listvar)res = listvar.pop(3)print(res, listvar)
remove()
功能:通过给予的值来删除,如果多个相同元素,默认删除第一个
格式:列表.remove(值)
返回值:None
(注意:如果有索引的情况推荐使用pop,效率高于remove)
listvar.remove('柏木由纪')print(listvar)
clear()
功能:清空列表
格式:列表.clear()
返回值:None
直接操作原有列表
listvar.clear()print(listvar)
index()
功能:获取某个值在列表中的索引
格式:列表.index(值[,start][,end]) # [] 表达参数可选项
返回值:找到返回索引 (找不到报错)
listvar = ['渡边麻友', '前田敦子', '大岛优子', '篠田麻里子', '高桥南', '柏木由纪', '渡边麻友', '小嶋阳菜']res = listvar.index('渡边麻友')print(res)res = listvar.index('渡边麻友', 3)print(res)
count()
功能:计算某个元素出现的次数
格式:列表.count(值)
返回值:次数
res = listvar.count('渡边麻友')print(res)
sort()
功能:列表排序(默认小到大排序)
格式:列表.sort(reverse=False)
返回值:None
注意:直接更改原列表
listvar = ['JayChou', 'JJ', 'Tony', 'Steve','Thor', 'Sam', 'Banner', 'Alex']listvar.sort()print(listvar)# 让列表从大到小排列 reverse = Truelistvar = ['JayChou', 'JJ', 'Tony', 'Steve', 'Thor', 'Sam', 'Banner', 'Alex']listvar.sort(reverse=True)print(listvar)
reverse()
功能:列表反转操作
格式:列表.reverse()
返回值:None
注意:直接更改原列表
listvar = ['JayChou', 'JJ', 'Tony', 'Steve', 'Thor', 'Sam', 'Banner', 'Alex']listvar.reverse()print(listvar)
深拷贝 与浅拷贝
lst_1 = [1, 2, 3, 4]lst_2 = lst_1lst_1.append(5)print(lst_1, lst_2)
浅拷贝
只拷贝一级所有元素
lst_1 = [2, 3, 4, 5]lst_2 = lst_1.copy()lst_1.append(6)print(lst_1, lst_2)lst_1 = [1, 2, 3, [4, 5, 6]]lst_2 = lst_1[:]lst_1[-1].append(7)lst_1.append(8)print(lst_1, lst_2)
import copylst_1 = [3, 4, 5, 6]lst_2 = copy.copy(lst_1)lst_1.append(7)print(lst_1, lst_2)# 二级容器仍然会改变lst_1 = [5, 6, [7, 8]]lst_2 = copy.copy(lst_1)lst_1[-1].append(9)lst_1.append(10)print(lst_1, lst_2)
深拷贝
将所有级别的元素统统独立拷贝一份
import copylst_1 = [6, 7, [8, 9]]lst_2 = copy.deepcopy(lst_1)lst_1[-1].append(10)print(lst_1, lst_2)dic_1 = {'a': [1, 2], 'b': {'c': 3, 'd': [4, 5]}}dic_2 = copy.deepcopy(dic_1)dic_1['b']['d'].append(6)print(dic_1, '\n', dic_2)
字典的相关函数 (增删改查)
增:赋值 fromkeys
删:pop popitem clear
改:update
查:getkeys values items
dictvar = {}dictvar['tank_1'] = 'Reinhardt'dictvar['tank_2'] = 'D.Va'dictvar['damage_1'] = 'McCree'dictvar['damage_2'] = 'Genji'dictvar['support_1'] = 'Ana'dictvar['support_2'] = 'Zenyatta'print(dictvar)
fromkeys()
使用一组键和默认值创建字典
dictvar_1 = {}.fromkeys(['a', 'b', 'c'], None)print(dictvar_1)dictvar_1 = {}.fromkeys(['a', 'b', 'c'], [])dictvar_1['b'].append('teen')print(dictvar_1)
pop()
通过键去删除键值对 (若没有该键可设置默认值,预防报错)
res = dictvar.pop('tank_1')print(res, dictvar)# res = dictvar.pop('damage_3')res = dictvar.pop('damage_3', 'key error')print(res, dictvar)
popitem()
删除最后一个键值对 3.6版本
res = dictvar.popitem()print(res, dictvar)
clear()
清空字典
dictvar.clear()print(dictvar)
update()
批量更新(有该键就更新,没该键就添加)
dictvar = {'tank_1': 'Reinhardt','damage_1': 'McCree','support_1': 'Ana','support_2': 'Zenyatta'} # 写法一 (推荐)dictvar.update({'tank_2': 'Orisa', 'damage_2': 'Hanzo'})print(dictvar)# 写法二dictvar.update(tank_3='Winston', support_3='Angela')print(dictvar)
get()
通过键获取值(若没有该键可设置默认值,预防报错)
# 如果没有该键 , 默认返回None , 如果指定默认值, 则返回该默认值res = dictvar.get('damage_3', 'key error')print(res)res = dictvar.get('damage_2')print(res, dictvar)
keys()
将字典的键组成新的可迭代对象
res = dictvar.keys()for i in res:print(i)
values()
将字典中的值组成新的可迭代对象
res = dictvar.values()for i in res:print(i)
items()
将字典的键值对凑成一个个元组,组成新的可迭代对象
res = dictvar.items()for i in res:print(i)for a, b in res:print(a, b)
集合相关操作 (交差并补)
intersection() 交集
set_1 = {'破坏球', '艾什', '法老之鹰', '奥丽莎'}set_2 = {'温斯顿', '法老之鹰', '破坏球', '半藏'}res = set_1.intersection(set_2)print(res)res = set_1 & set_2print(res)
difference() 差集
res = set_1.difference(set_2)print(res)res = set_1 - set_2print(res)res = set_2.difference(set_1)print(res)res = set_2 - set_1print(res)
union() 并集
res = set_1.union(set_2)print(res)res = set_1 | set_2print(res)
symmetric_difference() 对称差集 (补集情况涵盖在其中)
res = set_1.symmetric_difference(set_2)print(res)res = set_1 ^ set_2print(res)
issubset() 判断是否是子集
set_1 = {'猎空', '秩序之光', '堡垒', '小美'}set_2 = {'堡垒', '猎空'}set_3 = {'堡垒', '猎空'}# 真子集:2个集合不是完全一样的res = set_2.issubset(set_1)print(res)res = set_2 < set_1print(res)res = set_3.issubset(set_2)print(res)res = set_3 <= set_2print(res)
issuperset() 判断是否是父集
set_1 = {'猎空', '秩序之光', '堡垒', '小美'}set_2 = {'堡垒', '猎空'}set_3 = {'堡垒', '猎空'}res = set_1.issuperset(set_2)res = set_1 >= set_2print(res)res = set_2.issuperset(set_3)print(res)
isdisjoint() 检测两集合是否不相交 不相交 True 相交False
res = set_1.isdisjoint(set_2)print(res)
集合相关函数
增:add update
删:clear pop remove discard
add() 向集合中添加数据
setvar = {'吉拉德堡', '艾兴瓦尔德', '国王大道'}setvar.add('生态监测站')print(setvar)
update() 迭代着增加 update(可迭代性数据)
setvar.update(['多拉多', '釜山'])print(setvar)
clear() 清空集合
setvar = {'吉拉德堡', '艾兴瓦尔德', '国王大道'}setvar.clear()print(setvar)
pop() 随机删除集合中的一个数据
setvar = {'吉拉德堡', '艾兴瓦尔德', '国王大道'}res = setvar.pop()print(res, setvar)
remove() 删除集合中指定的值(不存在则报错)
setvar = {'吉拉德堡', '艾兴瓦尔德', '国王大道'}setvar.remove('艾兴瓦尔德')print(setvar)
discard() 删除集合中指定的值(不存在的不删除 推荐使用)
setvar = {'吉拉德堡', '艾兴瓦尔德', '国王大道'}setvar.discard('多拉多')print(setvar)
冰冻集合
frozenset 可强转容器类型数据变为冰冻集合
声明空的冰冻集合
fz = frozenset()print(fz, type(fz))
冰冻集合一旦创建,不能在进行任何修改,只能做交叉并补操作
fz_1 = frozenset([1, 2, 3, 4])fz_2 = frozenset([3, 4, 5, 6])res = fz_1 & fz_2print(res)