七步记忆法:
第一步:预习。
第二步:听课。
第三步:课间练习
第四步:下午或晚上练习(大量)
第五步:晚上睡觉前,回忆 (5分钟)
第六步:第二天早上。
第七步:每周总结。
集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
set1 = {'alex', [1,2], 1,2,3}#集合里元素不能是可变类型,也就是不能有列表和字典。
set1 = {'alex', 'wusir'}#直接创建
set2 = set({'alex', 'wusir'})#函数方式创建
print(set2)
可以被哈希的数据结构:int、float、str、tuple 和 NoneType。
不可以被哈希的数据结构:dict、list 和 set
可哈希的值是指不变的,比如元组,字符串,字符,变量
面试必考:list去重 *****
l1 = [1,1,2,3,4,4,3,2,1,5,5] set1 = set(l1) l2 = list(set1) print(l2)
其他方法后期奉上
set1 = {'alex','wusir','ritian','egon','barry'}
增
set1.add('女神') print(set1)
set1.update('abc') #迭代着增加 print(set1) #{'ritian', 'b', 'a', 'alex', 'egon', 'c', 'barry', 'wusir', '女神'}
删
set1.remove('alex') print(set1)
set1.pop() print(set1)
set1.clear() print(set1)
del set1 print(set1)
关系测试
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
交集 & intersection
print(set1 & set2) print(set1.intersection(set2))
并集 | union
print(set1 | set2) print(set1.union(set2))
反交集 ^ symmetric_difference
print(set1 ^ set2) print(set1.symmetric_difference(set2))
差集 - difference
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 - set2) print(set1.difference(set2))
子集 < issubset
set1 = {1,2,3}
set2 = {1,2,3,4,5,6}
print(set1 < set2) # True
print(set1.issubset(set2))
超集 > issuperset
print(set2 > set1) print(set2.issuperset(set1))
set1 = {1,2,3}
set3 = frozenset(set1)
print(set3) # 不可变的数据类型。 ***
深浅COPY
赋值运算
l1 = [1,2,3] l2 = l1 l1.append(666) print(l2) #[1, 2, 3, 666] print(id(l1)) #2034878407240 print(id(l2)) #2034878407240
浅copy
l1 = [1,2,3] l2 = l1.copy() l1.append(666) print(l2) #[1, 2, 3]
l1 = [1,2,3,[22,]] l2 = l1.copy() l1.append(666) print(l1,l2) #[1, 2, 3, [22], 666] [1, 2, 3, [22]] # l1[-1].append('taibai') #print(l1,l2) print(id(l1)) #1882012279432 print(id(l2)) #1882013504008 print(id(l1[-1])) #1882012505520 print(id(l2[-1])) #1882012279368
l1 = [1,2,3,[22,]] l2 = l1.copy() l1.append(666) print(l1,l2) #[1, 2, 3, [22], 666] [1, 2, 3, [22]] l1[-1].append('taibai') #append 不能同时用报错。↑ print(l1,l2) #[1, 2, 3, [22, 'taibai']] [1, 2, 3, [22, 'taibai']] print(id(l1)) #1882012279432 print(id(l2)) #1882013504008 print(id(l1[-1])) #1882012505520 print(id(l2[-1])) #1882012279368


外边的列表2个是独立的,里面的某个元素都是共用的,相当于一个人有2套房子。里面的厅什么的都是共用。
深copy
import copy l1 = [1,2,3,[22,]] l2 = copy.deepcopy(l1) print(l1,l2) #[1, 2, 3, [22]] [1, 2, 3, [22]] #l1.append(666) l1[-1].append(221) print(l1) #[1, 2, 3, [22, 221]] print(l2) #[1, 2, 3, [22]]

应用场景:面试会考,解释深浅copy
# 完全独立的copy一份数据,与原数据没有关系,深copy
# 如果一份数据(列表)第二层时,你想与原数据进行公用,浅copy。
面试题
切片属于浅copy
l1 = [1,2,3,[22,33]] l2 = l1[:] # l1.append(666) l1[-1].append(666) print(l2) #[1, 2, 3, [22, 33, 666]]
#把列表里 姓氏包含周的 删除 ,并打印列表 lst = ['周⽼⼆', '周星星', '麻花藤', '周扒⽪']
lst = ['周⽼⼆', '周星星', '麻花藤', '周扒⽪'] for i in lst[:]: #利用切片思维复制了浅拷贝了一份lst 来循环删除原lst if '周' == i.strip()[0]: lst.remove(i) print(lst)
ps:部分内容来自于互联网整理,如有侵权请联系我们,我们会在看到通知后24小时内做出处理。
posted on
浙公网安备 33010602011771号