集合类型内置方法
用途:数学里的集合
定义方式:{ }内用逗号隔开多个元素,元素只能是不可变类型,有两个特 征 * 1.会删除重复值 * 2.会打乱集合内的值
hobby_set = {'reading','running','sleeping','singing','sleeping'}
print(hobby_set)
#自定义set方法
hobby_list = ['reading','running','sleeping','singing','sleeping']
def set1(hobby_list) :
s = set()
for i in hobby_list :
s.add(i)
print(s)
set1(hobby_list)
{'singing', 'running', 'reading', 'sleeping'}
常用操作和内置方法:
优先掌握
# 长度len
hobby_set = {'reading','running','sleeping','singing','sleeping'}
print(len(hobby_set))
4
# in 和 not in
hobby_set = {'reading','running','sleeping','singing','sleeping'}
print('reading' in hobby_set)
print('read' in hobby_set)
True
False
# \ 并集 union
hobby_set = {'reading','running','sleeping','singing','sleeping'}
hobby_set2 = {'reading','running','comic','swimming'}
print(hobby_set | hobby_set2)
print(hobby_set.union(hobby_set2))
{'reading', 'sleeping', 'comic', 'swimming', 'running', 'singing'}
{'reading', 'sleeping', 'comic', 'swimming', 'running', 'singing'}
# & 交集 intersection
hobby_set = {'reading','running','sleeping','singing','sleeping'}
hobby_set2 = {'reading','running','comic','swimming'}
print(hobby_set & hobby_set2)
print(hobby_set.intersection(hobby_set2))
{'running', 'reading'}
{'running', 'reading'}
# - 差集 differdnce
hobby_set = {'reading','running','sleeping','singing','sleeping'}
hobby_set2 = {'reading','running','comic','swimming'}
print(hobby_set - hobby_set2)
print(hobby_set2 - hobby_set)
print(hobby_set.difference(hobby_set2))
{'singing', 'sleeping'}
{'comic', 'swimming'}
{'singing', 'sleeping'}
# ^ 对称差集 symmetric_difference
hobby_set = {'reading','running','sleeping','singing','sleeping'}
hobby_set2 = {'reading','running','comic','swimming'}
print(hobby_set ^ hobby_set2)
print(hobby_set2 ^ hobby_set)
print(hobby_set.symmetric_difference(hobby_set2))
{'sleeping', 'comic', 'swimming', 'singing'}
{'sleeping', 'comic', 'swimming', 'singing'}
{'sleeping', 'comic', 'swimming', 'singing'}
# ==
hobby_set = {'reading','running','sleeping','singing','sleeping'}
hobby_set2 = {'reading','running','comic','swimming'}
print(hobby_set == hobby_set2)
False
# 父集 :> >= issuperset
hobby_set = {'reading','running','sleeping','singing','sleeping'}
hobby_set2 = {'reading','running','comic','swimming'}
hobby_set3 = {'reading','sleeping'}
print(hobby_set > hobby_set3)
print(hobby_set2.issuperset(hobby_set3))
True
False
# 子集 < <= issubset
hobby_set = {'reading','running','sleeping','singing','sleeping'}
hobby_set2 = {'reading','running','comic','swimming'}
hobby_set3 = {'reading','sleeping'}
print(hobby_set < hobby_set2)
print(hobby_set3 < hobby_set2)
print(hobby_set3.issubset(hobby_set))
False
False
True
需要掌握
# add
s = {1,3,6}
print(s.add(4))
print(s)
s.add('haha')
print(s)
None
{1, 3, 4, 6}
{1, 3, 4, 6, 'haha'}
# remove
s = {1,3,6}
s.remove(6)
print(s)
# s.remove(9) 报错
# print(s)
{1, 3}
# difference_update
s = {1,3,6,9,4}
s2 ={1,3,6,5,8}
print(s.difference_update(s2))
print(s)
print(s2)
None
{4, 9}
{1, 3, 5, 6, 8}
# discard
s = {1,3,6,5,8,2}
print(s.discard(3))
print(s.discard(700)) #不会报错
print(s)
None
None
{1, 2, 5, 6, 8}
# isdisjoint 集合没有共同的部分返回True,否则返回False
s = {1,3,6,9,4}
s2 ={1,3,6,5,8}
s3 = {7}
print(s.isdisjoint(s2))
print(s.isdisjoint(s3))
False
True
存一个值or多个值 : 多个值
有序 or 无序 :无序
可变 or 不可变 :可变
s = {1,2}
print(s)
print(id(s))
s.add(3)
print(s)
print(id(s))
{1, 2}
2375254726696
{1, 2, 3}
2375254726696
总结
存值个数区分(掌握)
|存值个数|数据类型| |:-:|:-:| |一个值:|整型、浮点型、字符串 |多个值:|列表、字典、元组、集合
按可变不可变区分(掌握)
|可变or不可变|数据类型| |:-:|:-:| |可变:|列表、字典、集合 |不可变:|整型、浮点型、字符串
有序无序区分(掌握)
|有序or无序|数据类型| |:-:|:-:| |有序:|列表、元组、字符串 |无序:|字典、集合
浅拷贝和深拷贝
拷贝
内置方法
lis = [1,3,6,[4,5]]
lis2 = lis.copy()
print(lis)
print(lis2)
lis.append(7)
print(lis)
print(lis2)
lis[3][0] = 9
print(lis)
print(lis2)
[1, 3, 6, [4, 5]]
[1, 3, 6, [4, 5]]
[1, 3, 6, [4, 5], 7]
[1, 3, 6, [4, 5]]
[1, 3, 6, [9, 5], 7]
[1, 3, 6, [9, 5]]
浅拷贝
import copy
lis = [1,3,6,[4,5]]
lis2 = copy.copy(lis)
print(lis)
print(lis2)
lis.append(7)
print(lis)
print(lis2)
lis[3][0] = 9
print(lis)
print(lis2)
[1, 3, 6, [4, 5]]
[1, 3, 6, [4, 5]]
[1, 3, 6, [4, 5], 7]
[1, 3, 6, [4, 5]]
[1, 3, 6, [9, 5], 7]
[1, 3, 6, [9, 5]]
深拷贝
import copy
lis = [1,3,6,[4,5]]
lis2 = copy.deepcopy(lis)
print(lis)
print(lis2)
lis.append(7)
print(lis)
print(lis2)
lis[3][0] = 9
print(lis)
print(lis2)
[1, 3, 6, [4, 5]]
[1, 3, 6, [4, 5]]
[1, 3, 6, [4, 5], 7]
[1, 3, 6, [4, 5]]
[1, 3, 6, [9, 5], 7]
[1, 3, 6, [4, 5]]
特殊的
import copy
t1 = (1,2,3,4,5)
print(id(t1))
t2 = copy.deepcopy(t1)
print(id(t2))
2375254489752
2375254489752
import copy
t1 = (1,2,3,4,[1,2])
print(id(t1))
t2 = copy.deepcopy(t1)
print(id(t2))
2375254490104
2375254276144
lis = [1,2,3]
t1 = (1,2,lis)
print(t1)
lis.append(4)
print(lis)
print(t1)
(1, 2, [1, 2, 3])
[1, 2, 3, 4]
(1, 2, [1, 2, 3, 4])