一.set集合
set集合是python的一个基本数据类型. ⼀般不是很常用. set中的元素是不重复的.无序的.里面的元素必须是可hash的(int, str, tuple,bool), 我们可以这样来记. set就是dict类型的数据但是不保存value, 只保存key. set也用{}表示
注意: set集合中的元素必须是可hash的, 但是set本⾝是不可hash得. set是可变的.
1.使用set来去掉重复,且结果无序
lst = ["莉莉",'丽丽','李莉',"莉莉"] lst = list(set(lst)) #把lst转换成set,在转换成list print(lst) #结果为:['李莉', '莉莉', '丽丽']
2.使用set进行增删改查
1、增
s = {"jie", 'jie', 'lun'} s.add("zhou") # s.update(['liu']) #迭代添加 # s.update(["玛丽莲","马里兰","马利兰"]) print(s)
2、删
s = {"马尼拉","玛丽莲","马利兰"} item = s.pop() #随机删除一个 print(item) s.remove("玛丽莲") #指定删除 print(s) s.clear() #直接清空set()内容 print(s)
3、改
#set集合中的数据没有索引,没有办法定位,所以不能直接修改 #可以采用先删除,后添加的方式进行修改 s = {"马尼拉","玛丽莲","马利兰"} s.remove("马尼拉") s.add("马格啦") print(s)
4、查
#set集合是一个可迭代,可以进行for循环 for ss in s: print(ss)
3.常用操作
# 交集 s1 = {"莉莉",'丽丽','李莉'} s2 = {"安安","丽丽",'uu'} 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))
#子集 print(s1 < s2) #set1是set2的子集吗? print(s1.issubset(s2))
#超集 print(s1 > s2) #set1是set2的超集吗? print(s1.issuperset(s2))
# frozenset是不可变的. 也就是一个可哈希的数据类型 s = frozenset(["莉莉",'丽丽','李莉']) dic = {s:123} print(dic)
二.深浅拷贝
1.浅拷贝. 只会拷贝第一层. 第二层的内容不会拷贝. 所以被称为浅拷贝
#浅拷贝 lst1 = ["南山南","贝加尔湖畔","南方姑娘","成都"] # lst2 = lst1[:] # 也是浅拷贝 lst2 = lst1.copy() #lst2 和 lst1 不是一个对象了 lst1.append("告白气球") print(lst1,lst2)
2.深度拷贝. 把元素内部的元素完全进行拷贝复制. 不会产⽣⼀个改变另一个跟着改变的问题
# 深拷贝 import copy lst1 = ["南山南","贝加尔湖畔",["南方姑娘","成都"]] lst2 = copy.deepcopy(lst1) # 把lst1扔进去进行深拷贝,包括内部的所有内容进行拷贝 lst2[2].append("告白气球") print(lst1,lst2)
三.基础数据类型补充
#jion将列表变成字符串 li = ["李李嘉诚", "麻花藤", "⻩黄海海峰", "刘嘉玲"] s = "_".join(li) print(s)