Python中八大基本数据类型之 集合

可变数据类型与不可变数据类型:

1.可变:列表,字典

2.不可变:字符串,数字,元组

 

访问顺序:

1.顺序访问:字符串,列表,元组

2.映射:字典 

 

集合

由不同元素组成的集合,集合中是一组无序排列的可hash的值,可以作为字典的key

1.不同元素组成

2.无序

3.集合中元素必须是不可变类型,如:字符串,数字,元组

集合的定义:s={1,2,5,6,7}

 set()方法定义:相当于for循环,()里为可迭代类型

 

集合基本方法

添加:add()

清空:clear()

拷贝:copy()

删除:pop(),指定删除:remove(value)删除元素不存在时会报错,discard(value)删除元素不存在时不会报错

求交、差、并集:

python_li=['lcg','szw','zjw','lcg']
linux_li=['lcg','szw']
python_and_linux=[]
#for循环求交集
for i in python_li:
    if  i in linux_li:
        python_and_linux.append(i)
print("for循环求交集:",python_and_linux)

#集合求交集
p_s=set(python_li)
l_s=set(linux_li)
print(p_s, l_s)
print("集合求交集:",p_s.intersection(l_s))
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.difference(l_s))

#求交叉补集,两个集合求并集后减去交叉的部分
print("集合求交叉补集:",p_s.symmetric_difference(l_s))
print("集合求交叉补集:",p_s^l_s)

运行结果:

 

python_li=['lcg','szw','zjw','lcg','asdr','fdf']
linux_li=['lcg','szw','sffr','roy']
p_s=set(python_li)
l_s=set(linux_li)
print("p_s=",p_s)
print("l_s=",l_s)

#求差集后将值更新为p_s
p_s.difference_update(l_s)
print("p_s=",p_s)

#判断交集,如果没有交集返回True
b=p_s.isdisjoint(l_s)
print("判断交集:",b)

#判断是否是子集
print("判断是否是子集:",p_s.issubset(l_s))

#判断是否是父集
print("判断是否是父集:",p_s.issuperset(l_s))

#更新,覆盖,可更新多个值,add只能更新一个值
p_s.update('a')
print("p_s=",p_s)

运行结果:

 

补充:

集合是可变类型,能增加,能删除,但不可修改,

另一种集合定义方式:

s=frozenset('hello'),此种方式定义的集合为不可变类型

简单去重复操作:

 

 

 

原文地址:https://www.cnblogs.com/String-song/p/12937035.html