Python 集合

#####集合#####
#由不同元素组成,集合中的元素都是无序的,集合中的元素必须全为不可变类型
#不可变类型有:字符串、数字、字符、元祖
s = {1,2,3,4,5,6,1,3,5}
print(s)
s = set('hello')
print(s)

d = set (['hello','nihao','sawadika','nihao'])
print(d)

#add()增加元素
s.add('nihao')
s.add(8)
print(s)

#copy()
s1 = s.copy()
print(s1)

#clear()
s1.clear()
print(s1)

#pop() 随机删除
print(s)
s.pop()
print(s)

#remove() 指定删除 ,删除元素不存在会报错
#s.remove('h')
print(s)
# s.remove('lskdjflsd') 删除不存在的元素会报错
# print(s)

#discard() 指定删除 ,删除元素不存在不会报错
s.discard('o')
print(s)
s.discard('lskdjflsd')
print(s)

name_python = ['xiaoming','xiaoli','xiaoqian']
name_linux =['xiaoli','xiaoyan','xiaogang','xiaoqian']
name_both = []
for name in name_python:
if name in name_linux:
name_both.append(name)

print(name_both)

#列表转换成集合
p_s = set(name_python)
l_s = set(name_linux)
print(p_s,l_s)

print('-------------交集--------------------')
#集合求交集

print(p_s&l_s)
#集合求并集
print(p_s.union(l_s))

print(p_s|l_s)

#差集
print(p_s-l_s)
print(l_s-p_s)

#交叉补集
print(p_s^l_s)

#判断是否有交集,有则返回False,无则返回True
print(p_s.isdisjoint(l_s))

#判断s1是否为s2的子集,若是则返回true,否则返回false
s1 = {1,2}
s2 = {1,2,3}
print(s1.issubset(s2)) #s1s2的子集

#判断s2是否为s1的父集,若是则返回true
print(s2.issuperset(s1))

#update 更新值 update更新多个值,add更新一个值
s1.update(s2)
print(s1)


#集合为可变的类型,for循环可遍历的为可变类型,但可定义不可变集合 frozenset()
s = frozenset('hello') #定义不可变类型的集合
print(s)
names = ['alex','alex','zhangdan','yanliang']
n1 = set(names)
print(n1)
names = list(n1)
print(names)

#list去重,可以一步实现 names = list(set(names)) 但是通过集合去重的位置可能发生变化
原文地址:https://www.cnblogs.com/lqcjlu/p/12749665.html