day07
数据类型str用法补充
1 join() 是吧列表变成字符串
例
s=["哈哈","呵呵","你谁啊"] a="_*_".join(s) print(a) #结果是哈哈_*_呵呵_*_你谁啊
tu = ('你好', "你不好", "你好不好")
s = "".join(tu)
print(s)
#结果是你好你不好你好不好
s = "金毛狮王"
s1 = "_".join(s) # 迭代把每一项进行拼接
print(s1)
#结果是金_毛_狮_王
" ".join 里面纺纱就是用啥吧列表连接成字符串
2 split() 把字符串转换成列表
s="hadhadhadha" e=s.split("d") print(e) #结果是['ha', 'ha', 'ha', 'ha']
3 列表的删除问题
列表在循环的时候如果执行了删除操作. 索引和长度会有变化. 这种删除是不安全.
先把要删除的内容放在一个新列表中. 然后循环这个新列表. 删除老列表.
dict在循环过程中是不允许删除的.
把要删除的键放在列表中. 循环列表删除字典
lst = ["倚天屠龙记", "诛仙", "看见", "追风筝的人"] lst.clear() print(lst) 利用循环删除 for w in range(0,len(lst)): lst.pop() print(lst) new_lst=[] for w in lst: new_lst.append(w) for e in new_lst: lst.remove(e) print(lst)
追加 字典的小问题
dic = dict.fromkeys(["jay", "jj"], ["周杰伦", "林俊杰"]) dic["jay"].append("蔡依林") print(dic) #同一个key值 后面追加v值 dic={} dic.fromkeys(["葫芦娃", "蛇精"], ["冯提莫", "陈一发"]) print(dic) #什么都不打印 循环删除的案例 dic = {"韩哥":"发图不留种", "奎峰":"斗图小皇帝", "徐阳":"开车不留情"} lst=["奎峰"] for er in lst: # 循环list dic.pop(er) # 删除的是dict中的元素 print(dic) lst = ["发图哥", "谁困. 下午就往他那发图", "轰炸"] print(type(lst)) # 检查是什么类型 list tu1=tuple(lst) #是吧列表转换成元祖 print(tu1) print(type(tu1)) #检查是什么类型 tuple
4 set集合
无序的. 不重复的. 内容必须是可哈希的数据类型.
本身是不可哈希
dic = {"朱元璋":"明太祖", "朱棣":"明成祖", "朱元璋":"朱重八"} dic["朱元璋"]=["和尚"] print(dic) #set就是存储的key, set集合不会重复, 无序 set的构成 s = {"alex", 1, True, {"你好"}} #set是可以变的 s = {"马虎疼", [1,4,7]} # 不合法. [] 列表是不可哈希的 s = {"呵呵", "哈哈", "吼吼", (1, 4, 7)} # print(s)
添加:add(),update(),
lst = [1,4,7,1,4,5,6,7,8,2,1,3,9] s=set(lst) print(s) # 都是去重复 s = set({}) s.add("王祖蓝") # 添加元素 s.add("王祖贤") s.add("王祖蓝") print(s)
update(),
s = {"李谷一", "周润发", "邓丽君", "黄家驹", "张国荣"} s.update("中岛美嘉") # 迭代挨个更新 print(s) s.update(["中岛美雪", "很牛B"]) print(s) #结果是{'李谷一', '很牛B', '张国荣', '黄家驹', '中岛美雪', '周润发', '邓丽君'}
删除:pop()
s = {"李谷一", "周润发", "邓丽君", "黄家驹", "张国荣"} item = s.pop() # 随机删除 print(item) s.remove("李谷一") #删除 print(s) for el in s: print(el)
交集 并集 的问题
s1 = {"刘能", "赵四", "皮长山"} s2 = {"刘科长", "冯乡长", "皮长山"} #求交集 print(s1 & s2) print(s1.intersection(s2)) # 交集
s1 = {"刘能", "赵四", "皮长山"} s2 = {"刘科长", "冯乡长", "皮长山"} # 并集 print(s1 | s2) print(s1.union(s2)) # 并集
# s1 = {"刘能", "赵四", "皮长山"} # s2 = {"刘科长", "冯乡长", "皮长山"} # 差集, 把自己本身中和对方不相关的内容留下 # print(s2 - s1) # print(s2.difference(s1))
查询:可迭代对象
需要可哈希的时候用frozenset() 集合是不可变的 用frozenset()创建的集合是可变的
s = frozenset({1,5,7}) print(s) for el in s: print(el) dic = {s: "周杰伦"} # 验证. frozen是可哈希的. 不可变 print(dic)
.5 深浅拷贝
拷贝是复制一份
lst1 = ["紫衫龙王", "白眉鹰王", "青翼蝠王", "金毛狮王"]
lst2 = lst1
print(id(lst1))
print(id(lst2)) # 浅拷贝是全部复制 id 地址都是一样的
浅拷贝: 只会拷贝第一层内容. 第二层的内容不会拷贝
1. copy() 2.[:]
lst1 = ["紫衫龙王", "白眉鹰王", "青翼蝠王", "金毛狮王"] # # lst2 = lst1.copy() # 拷贝,复制, 克隆 # lst2 = lst1[:] # lst1.append("杨宵") # print(lst1, lst2)
深拷贝: 拷贝所有内容. 包括里层的所有内容
# lst1 = ["杨晓", "谢逊", ["说不得","听不得","打不得","骂不得"]] # # lst2 = lst1.copy() # 拿到的是第一层的复制品 # # print(id(lst1[2]), id(lst2[2])) # # lst1[2].append("看不得") # print(lst1, lst2) # 导入copy模块 import copy lst1 = ["杨晓", "谢逊", ["说不得","听不得","打不得","骂不得"]] lst2 = copy.deepcopy(lst1) # 深度拷贝 print(id(lst1[2]), id(lst2[2])) lst1[2].append("看不得") print(lst1, lst2)