浅复制
浅复制,只能复制外层元素,嵌套的内层元素是不能被复制的
例如:
d = {‘a’:1,‘b’:2,‘c’:3,‘e’:4}
d2 = d.copy()
d2 = {‘a’: 1, ‘b’: 2, ‘c’: 3, ‘e’: 4}
#此时改变d[‘a’]的值,d2中的d2[‘a’]不会改变
d[‘a’]=10
print('d = ',d,id(d))
d = {‘a’: 10, ‘b’: 2, ‘c’: 3, ‘e’: 4} 2255134280224
print('d2 = ',d2,id(d2))
d2 = {‘a’: 1, ‘b’: 2, ‘c’: 3, ‘e’: 4} 2255134280296
#改变d[‘a’]的值,d2[‘a’]不受影响,d[‘a’] 和 d2[‘a’]的id值不同
d={‘a’:{‘name’:‘葫芦娃’,‘age’:20},‘b’:2,‘c’:3}
d2 = d.copy()
#改变d2 name的值
d2[‘a’][‘name’] = ‘黑猫警长’
print('d = ',d,id(d))
d = {‘a’: {‘name’: ‘黑猫警长’, ‘age’: 20}, ‘b’: 2, ‘c’: 3} 2255134281304
print('d2 = ',d2,id(d2))
d2 = {‘a’: {‘name’: ‘黑猫警长’, ‘age’: 20}, ‘b’: 2, ‘c’: 3} 2255134808248
#改变d2 name的值,d name的值跟着改变,说明d2 copy不了name,这说明d2是浅拷贝
1、集合简介
a、集合当中只能存储不可变的对象
b、集合中存储的对象是无序的(不是按照元素插入的循序保存的)
c、集合中的元素不能重复
d、集合只能添加不可变对象
e、使用set()将字典转换为集合时,只会包含字典中的键(key)
1.1 创建集合
使用{ }来创建集合
s = {10,2,3,4,5,6,2,3,3,4}
print(s,type(s ))
打印值:过滤掉了重复元素
{2, 3, 4, 5, 6, 10} <class ‘set’>
1.2 集合只能添加不可变对象,列表是可变对象,所以报错
s = {[1,2,3],[4,5,6]}
报错:
Traceback (most recent call last):
File “<pyshell#17>”, line 1, in
s = {[1,2,3],[4,5,6]}
TypeError: unhashable type: ‘list’
1.3 使用set()可以将序列和字典转换成为集合
s = set([1,2,3,4,5,1,2,3,4,5])
print(s,type(s ))
打印值:
{1, 2, 3, 4, 5} <class ‘set’>
使用set()将字典转换为集合时,只会包含字典中的键(key)
s = set({‘a’:‘1’,‘b’:‘2’,‘c’:‘3’})
print(s,type(s ))
打印值:
{‘b’, ‘a’, ‘c’}
1.4 使用set()字符串序列转换集合
s = set(‘python’)
print(s,type(s ))
打印值:
{‘y’, ‘p’, ‘t’, ‘h’, ‘o’, ‘n’} <class ‘set’>
1.5 集合不能通过索引访问,需要转换列表,才能通过索引访问
s = {‘a’,‘b’,‘c’,1,2,3}
print(s,type(s))
{1, 2, 3, ‘b’, ‘a’, ‘c’} <class ‘set’>
#通过索引访问集合报错
print(s[0])
Traceback (most recent call last):
File “<pyshell#28>”, line 1, in
print(s[0])
TypeError: ‘set’ object does not support indexing
转换列表访问
print(list(s)[0])
返回值:1
1.6 集合的使用 in 和 not in 检查集合当中的元素
s = {‘a’,‘b’,‘c’,1,2,3}
print(‘a’ in s)
返回:True
1.7 len
print(len(s))
返回:6
1.8 add
s = {‘a’,‘b’,‘c’,1,2,3}
s.add(10)
print(s)
返回:{1, 2, 3, 10, ‘b’, ‘a’, ‘c’}
1.9 update() 将一个集合当中的元素添加到当前集合中
s = {‘a’,‘b’,‘c’,1,2,3}
s2 = set(‘python’)
s.update(s2)
返回:{‘y’, 1, 2, 3, ‘p’, ‘t’, 10, ‘h’, ‘o’, ‘b’, ‘n’, ‘a’, ‘c’}
1.10 pop()
s = {‘a’,‘b’,‘c’,1,2,3}
s.pop()
pop()返回:‘c’
s = {2, 1, 3, ‘b’, ‘a’}
1.11 remove()删除集合中指定的元素
s.remove(1)
s = {2, 3, ‘p’, ‘t’, 10, ‘h’, ‘o’, ‘b’, ‘n’, ‘a’, ‘c’}
1.12 clear()清楚集合中的元素
s.clear()
s = set()
2、集合运算
2.1 & 交集运算符
s1 = {1,2,3,4,5}
s2 = {3,4,5,6,7}
result = s1 & s2
print(result)
返回值:{3, 4, 5}
2.2 | 并集运算
s1 = {1,2,3,4,5}
s2 = {3,4,5,6,7}
result = s1 | s2
print(result)
返回值:{1,2,3,4,5,6,7}
2.3 - 差集运算
s1 = {1,2,3,4,5}
s2 = {3,4,5,6,7}
result = s1 - s2
print(result)
返回值:{1,2}
2.4 ^ 亦或集 指的是集合里面不相交的部分
s1 = {1,2,3,4,5}
s2 = {3,4,5,6,7}
result = s1 ^ s2
print(result)
返回值:{1,2,6,7}
2.5 <= 检查一个集合是否是另一个集合的子集
s1 = {1,2,3}
s2 = {1,2,3,4,5,6,7}
result = s1 <= s2
print(result)
返回值:True
s1集合是s2集合的子集,s2集合是s1集合的超集
2.6 < 检查一个集合是否是另一个集合的真子集
s1 = {1,2,3}
s2 = {1,2,3}
result = s1 < s2
print(result)
返回值:False
s1 = {1,2,3}
s2 = {1,2,3,4}
result = s1 < s2
print(result)
返回值:True
2.7 超集 和 真超集
= 检查一个集合是否是另一个集合的超集
检查一个集合是否是另一个集合的真超集
s1 = {1,2,3}
s2 = {1,2,3}
result = s1 > s2
print(result)
返回值:False
s1 = {1,2,3}
s2 = {1,2,3,4}
result = s2 > s1
print(result)
返回值:True