python笔记7—day7
知识点
1、基础数据类型汇总补充
1.1、str和int数据类型的没有学过的操作方法需要自己去找资料学习
1.2、 list:在循环一个列表时,最好不要删除列表中的元素,这样会使索引发生改变,从而报错
lis = [11,22,33,44,55] for i in range(len(lis)): print(i) # i = 0 i = 1 i = 2 del lis[i] print(lis) # [11,22,33,44,55] [22, 44, 55] [22, 44]
输出索引为偶数的元素
#第一种 lis = lis[::2] print(lis) #第二种 l1 = [] for i in lis: if lis.index(i) % 2 == 0: l1.append(i) lis = l1 print(lis)
lis = [11,22,33,44,55] for i in range(len(lis)-1,-1,-1): if i % 2 == 1: print(i) del lis[i] print(lis) print(lis)
1.3、元祖 如果元祖里面只有一个元素且不加‘,’那此元素是什么类型,就是什么类型。
tu1 = (1) tu2 = (1,) print(tu1,type(tu1)) print(tu2,type(tu2))
tu1 = ([1]) tu2 = ([1],) print(tu1,type(tu1)) print(tu2,type(tu2))
1.4、字典的操作方法也要自学
#创建一个dic dic = dict.fromkeys([1,2,3],'春哥') print(dic) dic = dict.fromkeys([1,2,3],[]) print(dic) # {1: [], 2: [], 3: []} dic[1].append('袁姐') print(dic) dic[2].extend('二哥') print(dic)
#删除带'k'的键,值也删掉 #方法一 dic = {'k1':'v1','k2':'v2','a3':'v3'} dic1 = {} for i in dic: if 'k' not in i: print(i) dic1.setdefault(i,dic[i]) dic = dic1 print(dic) #方法二 dic = {'k1':'v1','k2':'v2','a3':'v3'} l = [] for i in dic: if 'k' in i: l.append(i) for i in l: del dic[i] print(dic)
2、集合 可变数据类型,它里面的元素必须是不可变数据类型,无序,不重复
2.1、集合创建
set1=set({1,2,'barry'}) set2={1,2,'barry'} print(set1,set2)
2.2、集合的增删查,没有改
2.2.1、增
#add set1={'alex','liu','xiao','age'} set1.add('xxx') print(set1) #update 迭代增加 set1={'alex','liu','xiao','age'} set1.update('abcd') print(set1)
2.2.2、删
#pop 随机删除,有返回值 set1={'alex','liu','xiao','age'} print(set1.pop()) print(set1) #remove 按元素去删 set1={'alex','liu','xiao','age'} set1.remove('alex') print(set1) #clear 删除集合里的所有元素 set1={'alex','liu','xiao','age'} set1.clear() print(set1) #del 删除整个集合 set1={'alex','liu','xiao','age'} del set1 print(set1)
2.2.3、查
set1={'alex','liu','xiao','age'} for i in set1: print(i)
2.2.4、交集
#交集用 & 或者 intersection set1={1,2,3,4,5} set2={4,5,6,7,8} set3=set1 & set2 print(set3) print(set1.intersection(set2))
2.2.5、并集
#并集用 | 或者 union set1={1,2,3,4,5} set2={4,5,6,7,8} print(set1 | set2) print(set1.union(set2))
2.2.6、反交集
#反交集用 ^ 或者symmetric_difference set1={1,2,3,4,5} set2={4,5,6,7,8} print(set1 ^ set2) print(set1.symmetric_difference(set2))
2.2.7、差集,就是独有的
#差集用 - 或者 difference set1={1,2,3,4,5} set2={4,5,6,7,8} print(set1 - set2)#结果为{1, 2, 3} print(set1.difference(set2))
2.2.8、子集与超集
#子集用 < 或者 issubset #超集用 > 或者 issuperset set1={1,2,3,4,5} set2={1,2,3,4,5,6,7,8} print(set1 < set2) print(set1.issubset(set2))#set1是set2的子集 print(set2 > set1) print(set2.issuperset(set1))#set2是set1的超集
2.2.9、去重
li = [1,2,33,33,2,1,4,5,6,6] set1 = set(li) print(set1) li = list(set1) print(li)
2.2.10、forzenset
#forzenset 不可变数据类型,让集合变成不可变类型,不能增加修改,只能查 set1={1,2} print(set1,type(set1))#结果为{1, 2} <class 'set'> s=frozenset('xiao') print(s,type(s))#结果为frozenset({'a', 'x', 'i', 'o'}) <class 'frozenset'>
3、深浅copy
#浅拷贝 拷贝出来的列表第一层与原来是不同的内存地址,第二层指向原来的地址 #用copy和:来拷贝 l1 =[1,2,3] l2=l1.copy() print(l1,l2)#结果为[1, 2, 3] [1, 2, 3] l1[0]='a' print(l1,l2)#结果为['a', 2, 3] [1, 2, 3] l1=[1,2,3] l2=l1[:] print(l1,l2)#结果为[1, 2, 3] [1, 2, 3] l1=[1,2,3,['a','b',1],'c'] l2=l1.copy() print(l1,l2)#结果为[1, 2, 3, ['a', 'b', 1], 'c'] [1, 2, 3, ['a', 'b', 1], 'c'] l1[3].append('xiao') print(l1,l2)#结果为[1, 2, 3, ['a', 'b', 1, 'xiao'], 'c'] [1, 2, 3, ['a', 'b', 1, 'xiao'], 'c'] l1[1]='xiu' print(l1,l2)#结果为[1, 'xiu', 3, ['a', 'b', 1, 'xiao'], 'c'] [1, 2, 3, ['a', 'b', 1, 'xiao'], 'c']
#深拷贝 拷贝所有内容. 包括内部的所有,形成一个新的对象,虽然与之前的值和内容一模一样,但是它们完完全全的两个对象 import copy l1=[1,2,3,['a','b',1],'c'] l2=copy.deepcopy(l1) print(l1,l2)#结果为[1, 2, 3, ['a', 'b', 1], 'c'] [1, 2, 3, ['a', 'b', 1], 'c'] l1[0]='a' l1[3][0]=2 print(l1,l2)#结果为['a', 2, 3, [2, 'b', 1], 'c'] [1, 2, 3, ['a', 'b', 1], 'c']