day07-2018-10--25 深浅拷贝

                                      基础类型补充

#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在美国

 

posted on 2018-10-25 16:16  VastTry  阅读(116)  评论(0编辑  收藏  举报

导航