通过特性分析:
- 列表可修改,支持重复元素且有序
- 元组,字符串不可修改,支持重复元素且有序
局限就在于:他们都支持重复元素,但是如果场景需要对内容做去重处理,列表,元组,字符串就不方便了,而集合最主要的特点就是不支持元素的重复,相当于自带去重功能,并且内容是无序的。
#定义集合字面量
{元素,元素,......,元素}
#定义集合变量
变量名称 = {元素,元素,......,元素}
#定义空集合
变量名称 = set()
与列表,元组,字符串的定义基本相同:
- 列表:[]
- 元组:()
- 字符串:""
- 集合:{}
1.集合的修改
首先,因为集合是无序的,所以集合不支持:下标索引访问,但是集合和列表一样,是允许修改的
1.添加新元素
#定义集合
my_set = {"传智教育","黑马程序员","itheima","传智教育","黑马程序员","itheima","传智教育","黑马程序员","itheima"}
my_set1 = {}
#添加新元素
my_set.add("python")
my_set.add("传智教育")
print(my_set)# 集合会自动去重处理
#移除元素
my_set.remove("python")
print(my_set)
#从集合中随机取出元素
element = my_set.pop() #不能指定下标取出,只能随机取出
print(element)
print(my_set)
#清空集合
my_set.clear()
print(my_set)
- 取出两个集合的差集
语法:集合1.difference(集合2),功能:取出集合1和集合2的差集(集合1有而集合2没有的)
结果:得到一个新集合,集合1和集合2不变
my_set = {1,2,3,4,5,6,7}
my_set1 = {1,2,3,7,8,9,11,45}
set3 = my_set.difference(my_set1)
print(set3)
- 消除两个集合的差集
语法:集合1.difference_update(集合2)
功能:对比集合1和集合2,在集合1内,删除和集合2相同的元素
结果:集合1被修改,集合2不变
my_set = {1,2,3,4,5,6,7}
my_set1 = {1,2,3,7,8,9,11,45}
my_set.difference_update(my_set1)
print(my_set)
print(my_set1)
-
合并两个集合
语法:集合1.union(集合2)
功能:将集合1与集合2组合成新集合
结果:得到新集合,集合1与集合2不变
my_set = {1,2,3,4,5,6,7}
my_set1 = {1,2,3,7,8,9,11,45}
set3 = my_set.union(my_set1)
print(my_set)
print(my_set1)
print(set3)
- 统计集合的元素数量
语法:len()
my_set = {1,2,3,4,5,6,7}
my_set1 = {1,2,3,7,8,9,11,45}
num = len(my_set)
num1 = len(my_set1)
print(num,num1)
- 集合的遍历
集合不支持下标索引,所以不能用while循环取遍历
for循环遍历集合
my_set = {1,2,3,4,5,6,7}
my_set1 = {1,2,3,7,8,9,11,45}
for x in my_set:
print(x,end='')
具体案例:
my_list = ['黑马程序员','传播智客','黑马程序员','传播智客','itheima','itcast','itheima','itcast','best']
my_set = set()
for x in my_list:
my_set.add(x)
print(my_set)