今日主要内容
1. 基础数据部分的补充 1. join: 把列表中的数据进行拼接。 拼接成字符串lst = ["alex", "wusir", "ritian", "taibai"]s = '_'.join(lst) print(s)
2. 关于删除:
列表和字典在for循环的时候都不能删除。因为删除时,元素的索引会发生改变 把要删除的内容保存在新列表中。 循环新列表。 删除老列表(字典)lst = ["王大锤", "王有才", "张小白", "刘大哥"]for el in lst: lst.remove(el) print(lst)#删除不彻底, 剩下['王有才', '刘大哥']new_lst = [] #装要删除的内容
for el in lst: new_lst.append(el)#循环新列表的元素,对应找出原来列表的元素for el in new_lst: lst.remove(el) #根据新列表的元素,删除老列表的元素print(lst)
lst = ["王大锤", "王有才", "张小白", "刘大哥"]#删除姓王的new_lst = []for el in lst: if el.startswith('王'): new_lst.append(el)for el in new_lst: lst.remove(el)print(lst)
dic = { "jay":'周杰伦', "jj":"林俊杰 ", "jack": "莱昂纳多迪卡普里奥"}#清空字典lst = [] #建立新的列表,把需要删除的内容保存for k in dic: lst.append(k)for el in lst: dic.pop(el)print(dic)
3. fromkeys
dict.fromkeys(iterable, value)
把可迭代对象进行迭代。 和后面的value组合成键值对 返回新字典d = dict.fromkeys("周杰伦", "王尼玛")print(d){ '周': '王尼玛', '杰': '王尼玛', '伦': '王尼玛'}#第一项iterable ,共享value
坑1: 返回新字典。不会改变原来的字典 fromkeys是一个staticmethod 静态方法
dic = {}
dic.fromkeys(xxx, xxx) print(dic) # 结果是{}d = dic.fromkeys(xxx, xxx) #这样创建的字典有内容
dic = {}# d = dic.fromkeys("周杰伦", "王尼玛")d = dict.fromkeys("周杰伦", "王尼玛") #或者print(d) # {'周': '王尼玛', '杰': '王尼玛', '伦': '王尼玛'}dict.fromkeys("周杰伦", "王尼玛")print(dic) #{}
d = fromkeys(xxx.[])
字典中的所有的value都是同一个列表d = dict.fromkeys('周杰伦', ['哇哈哈'])print(d)#{'周': ['哇哈哈'], '杰': ['哇哈哈'], '伦': ['哇哈哈']}d['周'].append('爽歪歪')print(d)#{'周': ['哇哈哈', '爽歪歪'], '杰': ['哇哈哈', '爽歪歪'], '伦': ['哇哈哈', '爽歪歪']}
2. set集合
特点:无序不重复。 内部元素必须可哈希(不可变数据类型)lst = ["周杰伦", "周杰伦", "王力宏", "王力宏", "胡辣汤"]s = set(lst)print(s) #去重 {'王力宏', '周杰伦', '胡辣汤'}print(list(s)) # 转换为列列表 可以不用重新赋值变量
增删改查:
1. add() 添加 重复内容不会被添加
2.pop() 随机弹出一个
3.remove() 指定元素删除 ,如果元素不存在 报错
4.集合的数据没有索引 修改需要先删除后添加 即:先用.remove() 再.add()
5.for 循环 查询
常用操作
交集: s1.intersection(s2) 或者 s1 & s2
并集: s1.union(s2) 或者 s1 | s2
差集: s1.difference(s2) 或者 s1 - s2
反交集: s1.symmetric_difference(s2) 或者 s1 ^ s2
子集: s1.issubset(s2) 或者 s1 < s2
超集: s1.issupperset(s2) 或者 s1 > s2
3. 深浅拷贝(画图理解)
1. = 赋值操作没有创建新的对象。 此时 两个变量指向的是同一个内存地址lst1 = ["孙悟空", "贝吉塔", "卡卡罗特"]lst2 = lst1 # 赋值lst1.append("短笛")print(lst1) #['孙悟空', '贝吉塔', '卡卡罗特', '短笛']print(lst2) #['孙悟空', '贝吉塔', '卡卡罗特', '短笛']print(id(lst1), id(lst2)) #1046493921032 1046493921032
2. copy() 或者 [:] 浅拷贝。 拷贝第一层内容
3. 深拷贝
import copy copy.deepcopy() 深度拷贝。 把对象内部的所有内容都拷贝一份作用: 快速创建对象