集合set也是序列,集合用{}包起来且至少含有一个数据和一个英文逗号‘,’,集合可以称为没有键的字典。python的集合与数学上的集合大同小异,具有无序性,互异性。无序也就是没有索引(不能用set[index]访问元素),互异指不可能存在相同的元素,如果有相同的元素只保留一个。

目录

集合的创建:

集合元素的删除:

集合元素的增加:

集合的常见操作方法:


集合的创建:

1,用{}把至少一个数据(英文逗号不能少)数据包起来

set1 = {1, 2, 3, 3, 4, 4}
print(set1, type(set1))
# {1, 2, 3, 4} <class 'set'>
set1 = {1, } # 当只有一个元素时,‘,’不能少
print(set1, type(set1))
# {1} <class 'set'>

注意:空集合不是{},单个{}表示空字典。

2,使用set()函数,给他传一个可迭代对象作为参数,或者不传递参数从而创建一个空集合。

set1 = set()  # 创建空集合
print(set1, 'and', type(set1))
# set() and <class 'set'>
set2 = set([1])
print(set2, 'and', type(set2))
# {1} and <class 'set'>

集合元素的删除:

1,集合对象的remove方法,如果移除的元素不在集合里会报错

2,del语句用来删除集合对象:del obj

3,集合对象的pop方法,空集合用pop会报错。

4,集合对象的discard方法,如果元素存在则直接删除,如果元素不存在则不做任何操作

,5,集合对象的clear方法用来清空集合

set1 = {1, 2, 3, 4, 5, '我爱你'}
set1.remove(1)
set1.remove('我爱你')
print(set1)
# {2, 3, 4, 5}
set1.discard(2)
print(set1)
# {3, 4, 5}
set1.pop()
print(set1)
# {4, 5}
set1.clear()
print(set1)
# set()
del set1

集合元素的增加:

1,使用集合对象的add()方法,add()方法只能接收一个参数

2,使用集合对象的update()方法进行更新,update()方法的参数为一个可迭代对象。

set1 = {1, 2, 3, 4, 5, '我爱你'}
print(set1)
# {1, 2, 3, 4, 5, '我爱你'}
set1.add(6)
set1.add(1)
print(set1)
# {1, 2, 3, 4, 5, 6, '我爱你'}
set2 = {1, 2, 3, 4, 5, 6, 7, 8}
set1.update(set2)
print(set1)
# {1, 2, 3, 4, 5, 6, 7, 8, '我爱你'}
li = [1, 2, 3, 4, 5, 6, 7, 8, 9]
set1.update(li)
print(set1)
# {1, 2, 3, 4, 5, 6, 7, 8, 9, '我爱你'}

集合的常见操作方法:

1,并集

采用符号‘|’或者集合对象的union方法,需要两个集合进行操作。

2,交集

采用符号‘&’或者集合对象的insertsection方法,需要两个集合进行操作。

3,差集

采用符号‘-’或者集合对象的difference方法,需要两个集合进行操作。

set1 = {1, 2, 3, 3, 4, 4}
set2 = {'我爱你', 2, 5, 3, 1}
# 并集
set_union = set1 | set2
print(set_union)
# {1, 2, 3, 4, 5, '我爱你'}
set_union = set1.union(set2)
print(set_union)
# {1, 2, 3, 4, 5, '我爱你'}
# 交集
set_join = set1 & set2
print(set_join)
# {1, 2, 3}
set_join = set1.intersection(set2)
print(set_join)
# {1, 2, 3}
# 差集
set_diff = set1 - set2
print(set_diff)
# {4}
set_diff = set1.difference(set2)
print(set_diff)
# {4}

注:由于集合和字典都是无序的,所以不支持用索引来修改。另外也不支持‘+’和‘*’的运算,也就是集合和字典不支持用‘+’来拼接,更不能用‘*’来加倍,因为加倍直接导致元素重复好几倍。