删除补充/集合/深浅拷贝

时间:2022-06-19 19:51:23

1.关于删除(重点)
  1.join可以把列表转化字符串
  join里面内容迭代
  2.for el in lst:
  lst.remove(el)
  # 内部有一个变量来记录当前被循环的位置
  # 直接删除是删不干净的,
  # 原因是每次删除都涉及到元素移动
  先把要删除的内容保存到一个新列表里面 循环这个新列表
  删除老列表
  tem = []
  for el in lst:
    tem.append(el)
  for el in tem:
    lst.remove(el)
  print(lst)
3.fromkeys
  是一个类方法 作用是创建新字典
  d = dict.fromkeys(["我哈哈", "test"], [])
  d["test"].append("张无忌")
  # 所用key用的同一个列表 改变一个 另外一个也跟着改变
  print(id(d["test"]), id(d["我哈哈"]))
  print(d)
  """
  1918219439752 1918219439752
  {'我哈哈': ['张无忌'], 'test': ['张无忌']}
  """


2.set集合
  这里面的元素是无序可/哈希的
  其实就是不存value的字典
  去重===>最大的应用

  1.增加
    s.add("") #添加
    s.update("xxx") #迭代更新
  2.pop() 随机弹出 返回删除结果
    s.remove("xxx") #指定内容
    s = set{}
    s = {1,2,3}
  3.修改
    先删除再添加
  4.查询 for el in s:
    print(el)
    #可迭代的查询

  5.其他操作
    1.交集
      s1&s2
    2.并集
    3.差集
    4.反交集
    5.子集
    6.超集

3.深浅拷贝(难点)
  1.赋值没有创建对象,多个变量共享同一个对象

删除补充/集合/深浅拷贝删除补充/集合/深浅拷贝
1 lst1 = ["赵敏", "蛛儿", "小昭", "周芷若"]
2 lst2 = lst1
3 lst1.append("张无忌")
4 print(lst2, id(lst1), id(lst2))
5 """
6 ['赵敏', '蛛儿', '小昭', '周芷若', '张无忌'] 3028745675336 3028745675336
7 """
View Code

删除补充/集合/深浅拷贝


  2.浅拷贝:会创建新对象。新的对象里面的内容不会拷贝

  

删除补充/集合/深浅拷贝删除补充/集合/深浅拷贝
 1 lst1 = ["赵敏", "蛛儿", "小昭", "周芷若", ["金毛狮王", "白眉鹰王"]]
 2 lst2 = lst1.copy()
 3 lst1[4].append("张无忌")
 4 print(lst1)
 5 print(lst2)
 6 print(id(lst1), id(lst2))
 7 print(id(lst1[4]),id(lst2[4]))
 8 
 9 """
10 ['赵敏', '蛛儿', '小昭', '周芷若', ['金毛狮王', '白眉鹰王', '张无忌']]
11 ['赵敏', '蛛儿', '小昭', '周芷若', ['金毛狮王', '白眉鹰王', '张无忌']]
12 2097090355848 2097119153864
13 2097090355784 2097090355784
14 """
View Code

删除补充/集合/深浅拷贝


  3.深拷贝:创建一个一模一样的完全的对象,这个对象衍生出来的

  

删除补充/集合/深浅拷贝删除补充/集合/深浅拷贝
 1 import copy
 2 lst1 = ["赵敏", "蛛儿", "小昭", "周芷若", ["金毛狮王", "白眉鹰王"]]
 3 lst2 = copy.deepcopy(lst1)
 4 lst1[4].append("张无忌")
 5 print(lst1)
 6 print(lst2)
 7 print(id(lst1), id(lst2))
 8 print(id(lst1[4]),id(lst2[4]))
 9 
10 """
11 ['赵敏', '蛛儿', '小昭', '周芷若', ['金毛狮王', '白眉鹰王', '张无忌']]
12 ['赵敏', '蛛儿', '小昭', '周芷若', ['金毛狮王', '白眉鹰王']]
13 2999280550344 2999280557704
14 2999280398856 2999280556680
15 """
View Code

 

  删除补充/集合/深浅拷贝
  内容也会跟着赋值一份
  这个是面试内容,平时用得少