01.- 集合
(1).潜复制 copy()
潜复制就是只复制对象外层(只复制’a’:{}.‘b’:2,‘c’:3),不复制对象内层(不复制{‘name’:‘葫芦娃’,‘age’:20}
d = {‘a’:{‘name’:‘葫芦娃’,‘age’:20},‘b’:2,‘c’:3}
d2 = d.copy()
d2[‘a’][‘name’] = ‘黑猫警长’
print(‘d =’,d,id(d)) # d = {‘a’: {‘name’: ‘黑猫警长’, ‘age’: 20}, ‘b’: 2, ‘c’: 3} 2149788183792
print(‘d2 =’,d2,id(d2)) # d2 = {‘a’: {‘name’: ‘黑猫警长’, ‘age’: 20}, ‘b’: 2, ‘c’: 3} 2149788184152
以上两个前面一样,内存地址不一样
(2).集合的简介
不同点:
1.集合当中只能存储不可变对象
2.集合中存储的对象是无序的(不是按照元素的插入顺序进行保存的)
3.集合中不能出现重复元素
(3).创建集合
使用{}来创建集合
set是一组数,无序,内容又不能重复,通过调用set()方法创建
s = {10,2,3,4}
print(s,type(s)) # {3, 10, 2, 4} <class ‘set’>,所谓无序就是数据保存的顺序和我插入的顺序不一致
s = {10,2,3,4,1,2,3,1,1,2,10}
print(s,type(s)) # {1, 2, 3, 4, 10} <class ‘set’>
s = {[1,2,3],[4,5,6]}
print(s,type(s)) # TypeError: unhashable type: ‘list’ , 集合只能添加不可变对象,在这个例子中添加的list(列表)是个可变对象.
(4).set() 可以将序列和字典转换为集合
1.序列
s = set([1,2,3,4,5])
print(s,type(s)) # {1, 2, 3, 4, 5} <class ‘set’>
s = set([1,2,3,4,5,1,2,3,4,5])
print(s,type(s)) # {1, 2, 3, 4, 5} <class ‘set’>
s = set(‘python’)
print(s,type(s)) # {‘n’, ‘p’, ‘y’, ‘t’, ‘o’, ‘h’} <class ‘set’>
# {‘t’, ‘n’, ‘h’, ‘y’, ‘o’, ‘p’} <class ‘set’> 打印出来的结果具有无序性
2.字典, 使用set()将字典转换为集合时,只会包含字典中的键(key)
s = set({‘a’:1,‘b’:2,‘c’:3})
print(s,type(s)) # {‘a’, ‘c’, ‘b’} <class ‘set’>
# {‘b’, ‘a’, ‘c’} <class ‘set’> 打印出来的结果具有无序性
一,创建一个集合
s = {‘a’,‘b’,1,2,3}
0 1 2 3 4
print(s,type(s)) # {1, 2, 3, ‘a’, ‘b’} <class ‘set’>
print(list(s)[0]) # 1
二,集合的使用
(1),in 和 not in 是用来检查集合当中的元素
print(‘a’ in s) # True
(2).len() 来获取集合当中的元素数量(集合的长度)
print(len(s)) # 5
(3).add() 向集合当中添加元素
s.add(10)
s.add(30)
print(s) # {1, ‘b’, 3, 2, 10, ‘a’, 30}
{‘a’, 1, 2, 3, 10, ‘b’, 30}
(4).update() 是将一个集合当中的元素添加到;另一个集合当中
s2 = set(‘python’)
s.update(s2)
print(s) # {‘o’, 1, 2, 3, ‘a’, 10, ‘n’, ‘p’, ‘h’, ‘b’, ‘y’, 30, ‘t’}
(5).pop() 随机删除集合当中的一个元素
{‘o’, 1, 2, 3, ‘a’, 10, ‘n’, ‘p’, ‘h’, ‘b’, ‘y’, 30, ‘t’}
result = s.pop()
print(s) # {1, 2, 3, ‘p’, ‘y’, 10, ‘b’, ‘n’, ‘a’, ‘o’, ‘t’, 30}
print(result) # h 随机删除的一个元素是:h
(6).remove() 删除集合中指定的元素
s.remove(1)
print(s) # {‘o’, 2, 3, ‘n’, ‘h’, ‘a’, ‘b’, 10, ‘t’, ‘y’, ‘p’, 30}
删除的一个指定元素是:1
(7).clear() 清空集合
s.clear()
print(s) # set()
02. - 序列 - 集合运算
集合的运算
s1 = {1,2,3,4,5}
s2 = {3,4,5,6,7}
(1). & 交集运算
result = s1 & s2
print('result = ',result,s1,s2) # result = {3, 4, 5} {1, 2, 3, 4, 5} {3, 4, 5, 6, 7}
(2).并集运算
result = s1 | s2
print('result = ',result,s1,s2) # result = {1, 2, 3, 4, 5, 6, 7} {1, 2, 3, 4, 5} {3, 4, 5, 6, 7}
(3). - 差集
result = s1 - s2 # {1, 2}
print('result = ',result,s1,s2) # result = {1, 2} {1, 2, 3, 4, 5} {3, 4, 5, 6, 7}
(4). ^ 异或集 指的是集合里面不相交的部分
result = s1 ^ s2
print('result = ',result,s1,s2) # result = {1, 2, 6, 7} {1, 2, 3, 4, 5} {3, 4, 5, 6, 7}
(5). <= 检查一个集合是否是另一个集合的子集
a = {1,2,3}
b = {1,2,3,4,5,6}
result = a <= b # a集合是b集合的子集,b集合是a集合的超集
print('result = ',result,s1,s2) # result = True {1, 2, 3, 4, 5} {3, 4, 5, 6, 7}
result = {1,2,3} <= {1,2,3}
print('result = ',result,s1,s2) # result = True {1, 2, 3, 4, 5} {3, 4, 5, 6, 7}
(6). < 检查一个集合是否是另一个集合的真子集
result = {1,2,3} < {1,2,3}
print('result = ',result,s1,s2) # False {1, 2, 3, 4, 5} {3, 4, 5, 6, 7}