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 """
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 """
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 """
内容也会跟着赋值一份
这个是面试内容,平时用得少