集合
集合本身是可变数据类型,可以进行增删操作;
但是集合中的元素必须是不可变数据类型,所以集合不可以进行改操作;
集合本身是无序的,不重复;
集合的产生
set1=set('我是一个小可爱') print(set1,type(set1))
运行结果:
{'爱', '一', '可', '个', '是', '小', '我'} <class 'set'>
set2={True,2,3,'xixi'} print(set2,type(set2))
运行结果:
{True, 2, 3, 'xixi'} <class 'set'>
注意:集合本身虽然是可变数据类型,但是集合中的元素必须是不可变数据类型!
set3={'xk','skdj',12,4,[1,2,3]} #集合中的元素必须是不可变数据类型,而列表是可变数据类型; print(set3,type(set3)) #会报错
增:
set.add(element)
set4={1,2,3,'xuanxuan'} set4.add('wow') print(set4)
运行结果:
F:workspace_pythonpycharm_projectsvenvScriptspython.exe F:/workspace_python/pycharm_projects/fullstack2018-08-17/week2/day04/01.py {1, 2, 3, 'xuanxuan', 'wow'}
set.update(iterable)
set4={1,2,3,'xuanxuan'} set4.update('love') #update()方法相当于list的extend() 循环迭代添加; print(set4)
运行结果:
F:workspace_pythonpycharm_projectsvenvScriptspython.exe F:/workspace_python/pycharm_projects/fullstack2018-08-17/week2/day04/01.py {'v', 1, 2, 3, 'e', 'l', 'xuanxuan', 'o'}
删:
set.pop() ,随机删除(因为集合无序),有返回值,返回的是被删除的元素:
set5={1,2,3,'xuanxuan','keke','fangfang'} print(set5.pop()) #随机删除 print(set5)
运行结果:
F:workspace_pythonpycharm_projectsvenvScriptspython.exe F:/workspace_python/pycharm_projects/fullstack2018-08-17/week2/day04/01.py 1 {2, 3, 'xuanxuan', 'fangfang', 'keke'}
set.remove(element):删除集合中指定的元素;无返回值
set5={1,2,3,'xuanxuan','keke','fangfang'} set5.remove('xuanxuan') #删除集合中指定的元素 print(set5)
运行结果:
F:workspace_pythonpycharm_projectsvenvScriptspython.exe F:/workspace_python/pycharm_projects/fullstack2018-08-17/week2/day04/01.py {1, 2, 3, 'keke', 'fangfang'}
set.clear() :删除集合,set(),不是从内存中删除
set5={1,2,3,'xuanxuan','keke','fangfang'} set5.clear() #删除集合,不是从内存中删除 set(); print(set5)
运行结果:
F:workspace_pythonpycharm_projectsvenvScriptspython.exe F:/workspace_python/pycharm_projects/fullstack2018-08-17/week2/day04/01.py
set()
del set :从内存中删除该集合:
set5={1,2,3,'xuanxuan','keke','fangfang'} del set5 #从内存中删除该集合 print(set5) #会报错
运行结果:
F:workspace_pythonpycharm_projectsvenvScriptspython.exe F:/workspace_python/pycharm_projects/fullstack2018-08-17/week2/day04/01.py Traceback (most recent call last): File "F:/workspace_python/pycharm_projects/fullstack2018-08-17/week2/day04/01.py", line 16, in <module> print(set5) #会报错 NameError: name 'set5' is not defined
改:无 因为集合中的元素是不可变数据类型,无法进行修改!
查:
使用 for 循环遍历
set5={1,2,3,'xuanxuan','keke','fangfang'} for i in set5: print(i)
运行结果:
F:workspace_pythonpycharm_projectsvenvScriptspython.exe F:/workspace_python/pycharm_projects/fullstack2018-08-17/week2/day04/01.py 1 2 3 keke fangfang xuanxuan
frozenset() :集合变为不可变数据类型
set5={1,2,3,'xuanxuan','keke','fangfang'} set6=frozenset(set5) #frozenset对象是不可变的,无集合的add等方法~ print(set6) for i in set6: print(i)
运行结果:
F:workspace_pythonpycharm_projectsvenvScriptspython.exe F:/workspace_python/pycharm_projects/fullstack2018-08-17/week2/day04/01.py frozenset({1, 2, 3, 'keke', 'fangfang', 'xuanxuan'}) 1 2 3 keke fangfang xuanxuan
集合的交并差集:
set1={1,2,3,6,7} set2={2,3,8,9,0,4} print(set1 & set2) #求交集; print(set1 | set2) #求并集; print(set1-set2) #求差集; print(set2-set1) #求差集
运行结果:
F:workspace_pythonpycharm_projectsvenvScriptspython.exe F:/workspace_python/pycharm_projects/fullstack2018-08-17/week2/day04/01.py {2, 3} {0, 1, 2, 3, 4, 6, 7, 8, 9} {1, 6, 7} {0, 8, 4, 9}