可变数据类型与不可变数据类型:
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'),此种方式定义的集合为不可变类型
简单去重复操作: