1.基础数据类型的补充
"-".join(list) 把列表元素用-连接成字符串,“-”可以换成任意内容
“-”.join(str) 把字符串中的内容用-分割,“-”可以换成任意内容
2.列表和字典的删除
对于列表不能在for循环时删除列表,因为索引会跟着改变。
对于字典也不能在for循环时删除列表。
要想循环删除,首先把要删除的内容记录到一个新列表中,然后再循环删除列表或字典中的内容
eg:li = [11, 22, 33, 44]
del_li = []
for e in li:
del_li.append(e)
for e in del_li:
li.remove(e)
print(li) #[],删除了列表中所有元素
3.dict.formkey()
字典的属性,通过列表创建一个新的字典。前面列列表中的每一项都会作为key, 后⾯面列表中的内容作为value。 注:每个key对应的value都一样,即公用一个value列表;当修改其中一个key的value列表时,其他key对应的value列表都会跟着改变,因为所有的key公用同一个value列表。
eg:dic = {'k1': 'alex', 'k2': 'wusir', 's1': '⾦⽼板'}
dic_del_list = []
# 删除key中带有'k'的元素
for k in dic:
if 'k' in k:
dic_del_list.append(k)
for el in dic_del_list:
del dic[el]
print(dic) #{"si":"金老板"},剩下key中不带“k”的键值对。
4.类型转换
元组 => 列表 list(tuple)
列表 => 元组 tuple(list)
list=>str str.join(list)
str=>list str.split()
转换成False的数据: 0,'',None,[],(),{},set() ==> False
5.set集合(终点在去重,其他了解即可)
set集合是python的一个基本数据类型,不常用。set中的元素特点:无序的、不重复的(可用来去重。)、可hash的(int,str,tuple,bool),set就是dict类型的数据,只保存key,不保存value。set用{}表示。
0.去重
列表去重eg:
lst = [45, 5, "哈哈", 45, '哈哈', 50]
lst = list(set(lst)) # 把list转换成set, 然后再转换回list
print(lst)
注:set集合中的元素是可hash的,但是set本身不可hash,故set是可变的,可以进行增删改查。
令:s ={11,22,33}
1.增
s.add(key)
s.update(“123”) 迭代更新 #s = {11,22,33,1,2,3} 注:int型不可以迭代更新,故加引号为str型。
s.update([1,2,3]) #s = {11,22,33,1,2,3}
2.删除
s.pop() 随机删除一个key
s.remove(key) 如果key存在会直接删除;若key不存在,会报错。
s.clear 清空set。
3.删除
set中没有索引,无法定位,可以先删除,再添加。
s.remove(key)
s.add(key)
4.查
set是可迭代对象,故可以进行for循环
for el in s :
print(el)
5.其他操作
两个以上的set集合可以进行交集、并集、差集等操作。因不常用,这里不再赘述。
6.深浅拷贝
1.listdictset赋值
对于list,dict,set来说,直接赋值,其实是直接把内存地址给变量,并不是复制内容,所以对某一个进行修改时,另一个也会改变。
eg:lst1 = ["⾦毛狮王", "紫衫龙王", "⽩眉鹰王", "⻘翼蝠王"]
lst2 = lst1
print(lst1)
print(lst2)
lst1.append("杨逍")
print(lst1)
print(lst2)
结果:
['⾦毛狮王', '紫衫龙王', '⽩眉鹰王', '⻘翼蝠王', '杨逍']
['⾦毛狮王', '紫衫龙王', '⽩眉鹰王', '⻘翼蝠王', '杨逍']
2.浅拷贝
.copy() 只会拷贝第一层,第二层不会拷贝。
eg:list1 = [11,22,33,aa]
list2 = list.copy() 或者list2 =llist1[:]
浅拷贝就拷贝第一层,只拷贝了list1,list1和list2的内存地址不一样。当改变list1时,list1和list2内容不一样;但当内存地址aa的内容变时,list1和list2依然一样。
3.深拷贝
在前面调用import copy模块
格式:import copy
list2 = copy.deepcopy(list1)
深拷贝就是元素以及元素内部的元素全部拷贝了一份,相当于在内存中开辟了两个大空间,及各个子元素的小空间,不会产生修改一个另一个跟着改变的情况。