集合(set)

集合是一个不重复的无序的,可以使用{} 或者set来表示 {} 有两种意思: 字典、集合 {} 里如果放的是键值对,他就是一个字典,如果{}放的是单个的值,就是一个集合

person = {'name':'zhangsan','age':19}  #字典
x = {'hello','world',1} # 集合

# 如果有重复的数据,会自动去除
names = {'zhangsan','lisi','jack','lisi'}
print(names)

# set能不能进行增删改,能,但是一般不用,因为他是无序的,连续打印两次就会发现顺序不固定

增删改

# 增
names.add('ake')
print(names)

# 随机删除一个
# names.pop()
# print(names)

# 删除一个指定的元素
# names.remove("zhangsan")
# print(names)

# union 将多个集合合并生成一个新的集合
# A.update(B) 将B拼接到A里
a = names.union({'刘能','赵四'})
print(a)
names.update({'刘能','赵四'})


# 清空
# names.clear()

print(names)
#set()  
# {}表示的是空字典,不是空集合,空集合是使用set()表示

# 因为集合没有下标,所以没有办法根据下标查,因为没有重复,所以所有元素只有一个,

集合的高级用法

# set 支持很多算数运算符 
mathematics = {'小明','小红','小刚','小李','小熊','小雷','张三','李四'}
chinese = {'小丽','小明','小红','小李','王三'}
english = {'王五','小明','小刚','小熊','小雷'}

# print(mathematics + chinese)   # 不支持加法
print(mathematics - chinese) # A - B 求A和B的差集
print(mathematics & chinese) # A & B 求A和B的交集
print(mathematics | chinese)  # A | B 求A和B的并集
print(mathematics ^ chinese)  # A ^ B 是所有属于两个集合但不属于二者共有部分的集合。

去重排序

nums = [5,8,9,4,3,2,4,1,6,7]
x = set(nums)
y = list(x)
y.sort(reverse=True)
print(y)