9.集合set和frozenset冻结集合函数

集合set

set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以在set中没有重复的key。

集合中的元素要求是不可变的并且还是唯一的,我们就利用它是唯一来做去重

set可以看成数学意义上的无序无重复的集合,因此,两个set可以做数学意义上的交集、并集等操作。

一、集合特点-去重

lst=[1,2,3,2,3,4,2,5,6,2]  #定义列表lst
print(lst)                 #输出列表
print(set(lst))            #lst转化为集合输出(去重)
print(list(set(lst)))      #去重后的集合转化为列表输出
结果:
[1, 2, 3, 2, 3, 4, 2, 5, 6, 2]
{1, 2, 3, 4, 5, 6}
[1, 2, 3, 4, 5, 6]

二、集合的基本操作-交集

交集、并集、差集、反交集、子集、超集

set={1,2,3}              #定义集合set
set1={2,3,4}             #定义集合set1
set2=set | set1          #并集-合并集合
set3=set-set1            #差集-set中的单独元素
set4=set ^ set1          #反交集-两个集合中的单独元素
set5=set < set1          #set是set1的子集吗?输出布尔值
set6=set > set1          #set是set1的超集吗?输出布尔值
print(set & set1)        #交集-两个集合中的共有元素
print(set2)
print(set3)
print(set4)
print(set5)
print(set6)
结果:
{2, 3}
{1, 2, 3, 4}
{1}
{1, 4}
False
False

三、集合的增删改查

1.增加⭐

s = {"罗志祥", '文章', "周星驰"}
s.add("何炅")
print(s)
s.add("何炅")            # 重复的内容不会被添加到set集合中
print(s)
s1 = {"刘德华", '张学友', "张柏芝"}
s1.update("陈冠希")      # 迭代更新
print(s1)
s1.update(["唐韵", "林逸","林逸"])
print(s1)

结果:

{'周星驰', '罗志祥', '何炅', '文章'}
{'周星驰', '罗志祥', '何炅', '文章'}
{'张柏芝', '刘德华', '冠', '张学友', '陈', '希'}
{'张柏芝', '刘德华', '冠', '林逸', '张学友', '陈', '希', '唐韵'}

2.删除⭐

随机删除、指定元素删除、清空集合

s = {"周星驰", '周星星', "周瑞发","张学友", "杨虎城"}
item = s.pop()       # 随机弹出⼀个.
print(s)
print(item)
s.remove("周星星")    # 直接删除元素
# s.remove("刘亦菲")  # 不存在这个元素. 删除会报错
print(s)
s.clear()            # 清空set集合.需要注意的是set集合如果是空的. 打印出来是set() 因为要和dict区分的.
print(s)             # set()

结果:

{'周星星', '张学友', '周瑞发', '杨虎城'}
周星驰
{'张学友', '周瑞发', '杨虎城'}
set()

3.修改⭐

set集合中的数据没有索引. 也没有办法去定位⼀个元素. 所以没有办法进⾏直接修改.
我们可以采⽤先删除后添加的⽅式来完成修改操作

s = {'阿斯顿','阿瑟东','阿三的'}
s.remove('阿三的')
s.add('周星星')
print(s)

结果:
{'周星星', '阿瑟东', '阿斯顿'}

4.查询⭐

# set是⼀个可迭代对象. 所以可以进⾏for循环

s = {'阿斯顿','阿瑟东','阿三的'}
for i in s:
 print(i)

结果:
阿斯顿
阿瑟东
阿三的

四、frozenset函数

描述

frozenset() 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。

语法

frozenset() 函数语法:

class frozenset([iterable])

参数

  • iterable -- 可迭代的对象,比如列表、字典、元组等等。

返回值

返回新的 frozenset 对象,如果不提供任何参数,默认会生成空集合。

实例

以下实例展示了 frozenset() 的使用方法:

a=frozenset(range(10))                #生成一个新的不可变集合
print(a)
b=frozenset('runoob')                 #创建不可变集合
print(b)
c=frozenset(['终止','啊实打实','阿萨'])  #通过frozenset把集合变得可哈希(把不可变集合作为字典的key)
print(c)
dic={c:'123'}
print(dic)

结果:
frozenset({0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
frozenset({'r', 'b', 'u', 'o', 'n'})
frozenset({'终止', '啊实打实', '阿萨'})
{frozenset({'终止', '啊实打实', '阿萨'}): '123'}
posted @ 2020-08-11 10:19  杨梅杨梅  阅读(261)  评论(0编辑  收藏  举报