python-day7

一. 基础数据部分的补充

  1. join: 把列表中的数据进行拼接,拼接成字符串

lit = ['alex','wusir','ritian','taiabai']
s = "_".join(lit) #把列表拼接起来, split()相反
print(s)

#效果一样
# s = ''
# for i in lit:
#     s += i + '_'
# print(s.strip("_"))
View Code

  2. 关于删除

    列表和字典循环的时候都不能删除

1 ls = [1,2,3,4]
2 # ls.clear()#清空列表
3 # print(ls)
4 
5 for i in ls:
6     ls.remove(i)
7 print(ls)#删除不彻底,因为每次删除都会导致元素的移动,每次更新一次索引
View Code

    把要删除的内容保存到新列表中,循环新列表,删除旧列表(字典)

1 ls = [1,2,3,4]
2 new_li = []
3 for i in ls:
4     new_li.append(i)
5 # 循环新列表,删除原来的列表
6 for c in new_li:#不会导致循环的列表的元素移动问题
7     ls.remove(c)#,删除的是老列表
8 print(ls)
View Code

  3. fromkeys

    dic.fromkey(iter,value)

    把可迭代对象进行迭代,和后面的value组成键值对返回新字典

    1.返回新字典,不会改变原来的字典

1 dic = {}
2 new_dic = dic.fromkeys('x23','xxx')
3 print(dic)    #打印原来的字典
4 print(new_dic)#新字典
View Code

    2,字典中所有的value都是同一内容

1 dic = {'a':'1','b':'2','c':'3'}
2 d = dic.fromkeys('x12',[])
3 print(d)
4 print(dic)
View Code

    3. frozenset 可哈希的集合,不可变.

     s = forzenset([ 1,2,3,4,5 ])

     print(id(s))

二. set集合

  set特点:无序不重复,内部元素必须可哈希(不可变)

1 s = {1,2,(3,4,5,6),'abc'}#本身可变,不可哈希,但是内部元素是不可变的
2 print(type(s))
3 s.remove(2)   #删除指定元素
4 s.add(66)   #添加指定元素
5 s.pop()     #随机删除元素,pop()不能指定删除
6 #集合不能修改,只能删除之后再添加
7 # list -> tuple
8 # set -> frozenset
9 print(s)
View Code

  frozenset可哈希的集合,不可变

1 s = frozenset([1,2,3,4,5])
2 print(type(s))#<class 'frozenset'>
3 for i in s:
4     print(i)
View Code

三. 深浅拷贝

   ' = ' 没有产生新对象都是内存地址的赋值

1 lst1 = ['孙悟空','贝吉塔']
2 lst2 = lst1
3 lst1.append('短笛')
4 print(lst1)
5 print(lst2)
6 print(id(lst1),id(lst2))
View Code

  浅拷贝copy(),  [ : ]  #拷贝第一层内容

    优点:省内存

    缺点:容易出现同一对象被多个变量所引用

 1 lst1 = ['孙悟空','贝吉塔',['七龙珠']]
 2 # lst2 = lst1[:]
 3 # lst1.append('短笛')
 4 # print(lst1,lst2)
 5 # print(id(lst1),id(lst2))
 6 
 7 lst2 = lst1.copy()
 8 # lst1.append('短笛')
 9 lst1[2].append('短笛')
10 print(lst1,lst2)
11 print(id(lst1[2]),id(lst2[2]))
View Code

  深拷贝

    优点:完全拷贝一份

    缺点:占内存

    import copy

    copy.deepcopy()深度拷贝,把对象内部的所有内容都拷贝一份

1 import copy
2 lst1 = ['孙悟空','贝吉塔','卡卡罗特',['七龙珠','战斗陀螺']]
3 lst2 = copy.deepcopy(lst1)#会把这个对象相关的内部信息全部复制一份
4 lst1[3].append('wqer')
5 print(lst1,lst2)
6 print(id(lst1),id(lst2))
View Code

  共同点:作用创建对象   >>>>> 原型模式(设计模式)

  

原文地址:https://www.cnblogs.com/Thui/p/9849971.html