基础类型补充
#1 join (字符串中 可迭代的对象的拼接) s='abc' s1='_'.join(s) print(s1) #a_b_c lis=['a','b','c'] s2='_'.join(lis) print(s2) #a_b_c tu=('a','b','c') s3="_".join(tu) print(s3) #a_b_c dic={'a':'a','b':'b','c':'c'} s4="_".join(dic)#默认是迭代key print(s4) #a_b_c s5="_".join(dic.values()) print(s5) ##a_b_c
list 和 dict补充
#2.假设list 和 dict 的clear 方法被龟叔移除了 你怎么实现clear # l=[1,2,3,4,5] # l1=[1,2,3,4,5] # for i in l: # l.remove(i) # print(l) #[2, 4] # for i in range(len(l)): # l.remove(l[i]) # print(l) #[1,2,3,4,5]-->remove(l1[0])--->[2,3,4,5]-->remove(li[1])--->[2,4,5]--->remove(l1[2])-->[2,4] #如何删除呢? # l2=[1,2,3,4,5] # l3=[1,2,3,4,5] #(1) # for i in range(len(l2)):#for i in range(len(l2))<-->for i in range(0,5) 也就是执行了5次pop方法 # l3.append(l2.pop()) # print(l2) #[] #(2) # for i in l3: # l2.remove(i) # print(l2) #[] 原理是 先把要删除的元素存在一个list里,再遍历这个list的每一个元素,再删除 #关于dict fromkey() #坑1 # a={} # a.fromkeys('abc',['哈哈']) # print(a) # @staticmethod # known case # def fromkeys(*args, **kwargs): # real signature unknown # """ Create a new dictionary with keys from iterable and values set to value. """ # pass #{} fromkeys是dict类的静态方法,参数中没有self参数,可以把他看成DICT类的一个工具包,你用a调用它,并不会改变a, # 只是执行这个工具包会有一个字典返回。 # a={} # a=a.fromkeys('abc',['哈哈']) # print(a) #{'a': ['哈哈'], 'b': ['哈哈'], 'c': ['哈哈']} #坑2 # a['a'].append('1') # print(a) #{'a': ['哈哈', '1'], 'b': ['哈哈', '1'], 'c': ['哈哈', '1']}
set
a={1,2,3,4,4} print(a) #{1, 2, 3, 4} a.add(5) print(a) #{1, 2, 3, 4, 5} a.update('123') print(a) #{1, 2, 3, 4, 5, '1', '2', '3'} a.update([4,5,6]) print(a) #{1, 2, 3, 4, 5, '1', '3', 6, '2'} a.remove(6) print(a) #{'2', 1, 2, 3, 4, 5, '1', '3'} a.pop() print(a) #{2, 3, 4, 5, '2', '3', '1'} a.clear() print(a) #set() a={1,2,3} b={2,3,4} print('交集:',a&b,'并集:',a|b,"差集:",a-b,"反交集:",a^b,"子集:",a<b,"超集:",a>b) #交集: {2, 3} 并集: {1, 2, 3, 4} 差集: {1} 反交集: {1, 4} 子集: False 超集: False a=frozenset(a) d={a:"你居然可以做字典的key了,你不是可变的嘛,呵呵,小样,接受frozenset的制裁吧!"} print(d) #{frozenset({1, 2, 3}): '你居然可以做字典的key了,你不是可变的嘛,呵呵,小样,接受frozenset的制裁吧!'}
深浅拷贝
#浅拷贝 # li_1=[1,2,3,4] # li_2=li_1 # li_1.append(5) # print(li_1,li_2) #[1, 2, 3, 4, 5] [1, 2, 3, 4, 5] # li_1 和 li_2 共同享用一个杯子,li_1 装了水,li_2 可以看到水变多了,li_1 喝一口水,li_2 可以看到水变少了 #同理 li_2 加水 或者 喝水,li_1也可以看到。因为共用一个杯子。 # a=[1,2,3,[1,2,3]] # b=a.copy()#或者b=a[:] # a.append(1) # print(a,b) #a-->[1, 2, 3, [1, 2, 3], 1] #b-->[1, 2, 3, [1, 2, 3]] # a[3].append(4) # print(a,b) #a-->[1, 2, 3, [1, 2, 3, 4], 1] #b-->[1, 2, 3, [1, 2, 3, 4]] # a,b的内存地址不同(a,b使用不同的电脑上网),但是 a中第一层的每一个元素的内存地址,和b中相同, # (但是他们上的网站都是来自同一个服务商提供的页面,比如www.baidu.com) #某一天,百度的首页logo变了,a,b看到的百度logo都发生了变化, #a可以在自己电脑删除百度,也可以添加google,但不影响b电脑的网页数量和内容 #深拷贝 # import copy # a=[1,2,3] # b=copy.deepcopy(a) #一样的电脑,a在中国,b在美国