一,基础数据类型补充
对于join的使用
还有split的使用
lst = ['黄飞鸿','霍元甲','十三姨','鬼脚七'] s = '*'.join(lst) print(s) s1 = s.split("*") print(s1)
关于删除列表和删除字典的问题
注意: 由于删除元素会导致元素的索引改变, 所以容易易出现问题. 尽量量不要再循环中直接去删
除元素. 可以把要删除的元素添加到另⼀一个集合中然后再批量量删除.
# # for i in range(0,len(lst)): # # lst.pop() # # print(lst) li = [11,12,13] del_li = [] for e in li: del_li.append(e) for s in del_li: li.remove(s) print(li)
dic = {'k1':'alex','k2':'wusir','k3':'金老板'} lst = [] for k in dic: if 'k' in k: lst.append(k) for el in lst: del dic[el] print(dic)
fromkeys
dic = dict.fromkeys(['jay','jj'],['周杰伦','马化腾']) print(dic) dic['jay'].append('胡大') print(dic)
类型转换:
元组 => 列列表 list(tuple)
列列表 => 元组 tuple(list)
list=>str str.join(list)
str=>list str.split()
转换成False的数据:
0,'',None,[],(),{},set() ==> False
二 set集合
set集合是python的⼀一个基本数据类型. ⼀一般不是很常⽤用. set中的元素是不重复的.⽆无序的.⾥里里
⾯面的元素必须是可hash的(int, str, tuple,bool), 我们可以这样来记. set就是dict类型的数据但
是不保存value, 只保存key. set也⽤用{}表⽰示
注意: set集合中的元素必须是可hash的, 但是set本身是不可hash得. set是可变的.
set中的元素是不重复的, 且⽆无序的.注意列表和字典都不可以
使⽤用这个特性.我们可以使⽤用set来去掉重复
lst = [45,5,'哈哈',45,'哈哈'] lst = list(set(lst)) print(lst)
set的增删改查
1增加
add和upade
s = {'刘嘉玲','关之琳','王祖贤'} s.update('马化腾') print(s) s.update(['张曼玉','李若彤','李若彤']) print(s)
2 删除
pop
remove
clear
s = {'刘嘉玲','关之琳','王祖贤'} # item = s.pop() # # print(s) # # print(item) # s.remove('关之琳') # print(s) # s.clear() # print(s)
3修改
先删除后添加
s = {'刘嘉玲','关之琳','王祖贤'} s.remove('刘嘉玲') s.add('赵本山') print(s)
4查询
for 循环
5常见操作
交集和并集
s1 = {"刘能", "赵四", "⽪皮⻓长⼭山"} s2 = {"刘科⻓长", "冯乡⻓长", "⽪皮⻓长⼭山"} # print(s1& s2) # print(s1.intersection(s2)) print(s1|s2) print(s1.union(s2))
# 差集 print(s1 - s2) # {'赵四', '刘能'} 得到第⼀一个中单独存在的 print(s1.difference(s2)) # {'赵四', '刘能'} # 反交集 print(s1 ^ s2) # 两个集合中单独存在的数据 {'冯乡⻓长', '刘能', '刘科⻓长', '赵四'} print(s1.symmetric_difference(s2)) # {'冯乡⻓长', '刘能', '刘科⻓长', '赵四'} s1 = {"刘能", "赵四"} s2 = {"刘能", "赵四", "⽪皮⻓长⼭山"} # ⼦子集 print(s1 < s2) # set1是set2的⼦子集吗? True print(s1.issubset(s2)) # 超集 print(s1 > s2) # set1是set2的超集吗? False print(s1.issuperset(s2))
set集合本身是可以发生改变的.是不可哈希的,我们可以使用frozenset来保存数据.
frozenset是不可变的,也就是一个可哈希的数据类型
s = frozenset(['赵本山','刘能','皮长山','长跪']) dic = {s:'123'} print(dic)
三深浅拷贝
浅拷贝
一层拷贝
深拷贝
多层拷贝
import copy lst1 = ['何炅','谢娜','杜海涛',['马化腾','马云']] lst2 = copy.deepcopy(lst1) lst1[3].append('无敌是多么寂寞') print(lst1) print(lst2) print(id(lst1[3]),id(lst2[3]))
深度拷⻉贝. 把元素内部的元素完全进⾏行行拷⻉贝复制. 不会产⽣生⼀一个改变另⼀一个跟着
改变的问题