day07--set集合,深浅拷贝

一,set 集合

set 中的元素是不重复的,无序的,里面的元素必须是可哈希的(int,str,tuple,bool),但是set本身是不可哈希的,set是可变的.

可以这样来记:set 就是dict类型的数据,但是不保存value,只保存key,set也可以用{}表示

可以使用set来去掉重复

lst = [1,2,4,4,4,5,2,2,6,7,8,9]
lst = list(set(lst))
print(lst)
#[1, 2, 4, 5, 6, 7, 8, 9]

二,set集合的增删改查

  1,增加

    .add   添加,重复的内容不会被添加到set集合中

    .update   迭代更新

s = {"吃饭","睡觉","打豆豆"}
s.add("打累了")
print(s)
#{'吃饭', '打累了', '打豆豆', '睡觉'}
s.update("神经病")
print(s)   #{'睡觉', '经', '吃饭', '打豆豆', '病', '打累了', '神'}
s.update(["哈哈"])
print(s)  #{'睡觉', '经', '吃饭', '打豆豆', '哈哈', '病', '打累了', '神'}

  2,删除

    .pop  随机删除一个,弹出一个

    .remove  直接删除一个元素,如果不存在这个元素,会报错

    .clear    清空  如果set集合是空的,打印出来的事set(),因为要跟dict区分

  3,修改:

    set集合中的数据没有索引,也没有办法定位一个元素,所以没办法直接进行修改,可以采用先删除后添加的方式来完成修改操作

#把刘嘉玲改为赵本山
s = {"刘嘉玲", '关之琳', "王祖贤","张曼玉", "李若彤"}
s.remove("刘嘉玲")
s.add("赵本山")
print(s)

  4,查询

set是一个可迭代对象,所以可以使用for循环

       for el in s:

    print(el)

  5,常用操作

s1 = {"刘能", "赵四", "⽪长山"}
s2 = {"刘科⻓", "冯乡长", "⽪长山"}
# 交集
# 两个集合中的共有元素
print(s1 & s2) # {'皮长山'}
print(s1.intersection(s2)) # {'皮长山'}
#并集
print(s1 | s2) # {'刘科长', '冯乡长', '赵四', '⽪长山', '刘能'}
print(s1.union(s2)) # {'刘科长', '冯乡长', '赵四', '⽪长山', '刘能'}
# 差集
print(s1 - s2) # {'赵四', '刘能'} 得到第一个中单独存在的 
print(s1.difference(s2)) # {'赵四', '刘能'}

二,深浅拷贝

浅拷贝:只拷贝第一层,第二层的内容不会拷贝,一个改变,另一个也会跟着改变

深拷贝:把所有的都拷贝,元素内部的元素也进行拷贝,不会产生一个改变,另一个也跟着改变的问题

猜你喜欢

转载自www.cnblogs.com/lianghui-lianghui/p/9179353.html