集合:可变数据类型,里面装的都是不可变的数据类型(可哈希)。
首先,我们需要知道在python中哪些是可变数据类型,哪些是不可变数据类型。可变数据类型:列表list,字典dict和集合;不可变数据类型:整型int、浮点型float、字符串型string和元组tuple。
用一句话来概括上述过程就是:“python中的不可变数据类型:不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象,内部会有一个引用计数来记录有多少个变量引用这个对象;可变数据类型:允许变量的值发生变化,即如果对变量进行append、+=等这种操作后,只是改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。
1.集合的创建:
set={1,2,3}
print(type(set))
<class 'set'>
set=set({1,2,3,4})
print(set)
2.集合的增加:
add()方法:
set=set({1,2,3,4})
set.add('集合')
print(set)
--------结果--------
{1, 2, 3, 4, '集合'}
update()方法:
set=set({1,2,3,4})
set.update('集合')
print(set)
--------结果--------
{1, 2, 3, 4, '合', '集'}
3.集合的删除:
remove()方法:删除给定元素
#当元素存在的时候
set=set({1,2,3,4})
set.remove(1)
print(set)
--------结果--------
{2, 3, 4}
#当元素不存在的时候
set=set({1,2,3,4})
set.remove(5)
print(set)
--------结果--------
KeyError: 5 #显示报错
pop()方法: 随机删除元素
set={7,2,3,4}
set.pop()
print(set)
clear()方法:清空集合
set={7,2,3,4}
set.clear()
print(set)
--------结果--------
set() # 空集合用set()表示,不用{},为了与字典分隔开来
del 方法:删除整个字典
set={7,2,3,4}
del set
4.由于集合的无序性和集合内部装的都是不可变元素的原因,所以无法进行查和改的操作。
5.集合在数学、数据方面的操作:
1.交集:∩
set1={1,2,3,4}
set2={6,3,4,5}
print(set1&set2)
--------结果--------
{3, 4}
2.并集:|
set1={1,2,3,4}
set2={6,3,4,5}
print(set1|set2)
--------结果--------
{1, 2, 3, 4, 5, 6}
3.差集:-
set1={1,2,3,4}
set2={6,3,4,5}
print(set1-set2)
--------结果--------
{1, 2}
反交集:^
set1={1,2,3,4}
set2={6,3,4,5}
print(set1^set2)
--------结果--------
{1, 2, 5, 6}
子集:<
set1={1,2,3,4}
set2={6,3,4,5}
print(set1<set2)
--------结果--------
False
不可变集合:
set1=frozenset((1,2,3,4)) # 注意:frozenset 的参数只能有1个,所以多个参数要么组成元组,要么组成字符串
for i in set1:
print(i)
--------结果--------
1
2
3
4