1.集合
集合主要对里面的元素进行去重和关系运算,元素排列是无序的。
a.集合的操作
#############去重
set1 = {1,1,2,2,3,4,4,5}
print(set1) #输出set1 = {1,2,3,4,5}
##############增加值
set1 = {1,1,2,2,3,4,4,5}
set1.add(6)
print(set1) #输出set1 = {1,2,3,4,5,6}
set1.update('abc')
print(set1) #输出set1 = {1,2,3,4,5,6,'a','b','c'}
###############删除
set1.pop() #随机删除
set1.remove('a') # 按照元素删除,如果无此元素会报错
set1.clear() #清空集合
del set1 #删除集合
#################查询
用for循环查询,因为集合的元素是无序的
b.集合的关系运算
set1 = {1,2,3,4,5} set2 = {1,2,3,7,8}
print(set1 & set2) #交集。输出{1, 2, 3}
print(set1 | set2) #并集。输出{1, 2, 3, 4, 5, 7, 8}
print(set1 - set2) #差集。输出{4, 5}
print(set2 - set1) #差集。输出{7, 8}
print(set1 ^ set2) #反交集。输出{4, 5, 7, 8}
print(set1 < set2) #子集。输出False
print(set2 > set1) #超集。输出False
2.深浅copy ######浅copy 第一层各自独立,从第二层开始,共用一个内存地址 s1 = [1, 2, 3,[11,22]] s2 = s1.copy() s1[-1].append(666) print(s1, s2) #s1和s2一样的值 print(id(s1), id(s2)) #s1和s2的内存id不同 print(id(s1[-1]), id(s2[-1])) #内层列表的id值是一样的 深copy 无论多少层,都是互相独立的 import copy s1 = [1, 2, 3,[11,22]] s2 = copy.deepcopy(s1) s1.append(4) print(s1, s2) #只有s1增加了4,s2并没有增加4,说明第一层不是同一内存地址 s1[-1].append(33) #在内层的列表增加值33 print(s1, s2) #只有s1内层列表增加了33,s2并没有增加33,说明内层不是同一内存地址
3.文件操作 文件操作的执行流程: 打开文件,产生文件句柄(f1)--- 对文件句柄进行操作(open())---关闭文件句柄(f1.close()) ########文件的读 r模式: f1 = open('123.txt',encoding='utf8',mode='r') #123.txt要存在当前目录,否则会报错 print(f1.read()) #打印读取的内容 f1.close() #关闭文件句柄 f1.read(n) #按照字符读取,n代表n个字符 f1.readline() #按行读取 f1.readlines() #返回列表,包含所有的行 rb模式(读取非文字类): f1 = open('1.jpg',mode='rb') #1.jpg要存在当前目录,否则会报错 print(f1.read()) f1.close() f1.read(n) #按照字节读取,n代表n个字节 for循环模式:一次循环占用一块内存,循环完后释放。 r+模式和r+b模式和以上模式类似。 ##############文件的写 f1 = open('456.txt',encoding='utf-8',mode='w') #没有文件,新建文件写入内容,有原文件,先清空内容,再写入新内容 print(f1.write('456')) f1.close() wb模式(非文字类的写入) f2 = open('2.jpg', mode='wb') f2.write(f1.read()) #f1.read()是读取一个图片内容 f2.close() w+模式和w+b模式和以上模式类似. ###############文件的追加 f1 = open('456.txt',encoding='utf-8',mode='a') #没有文件,新建文件写入内容,有原文件,在源文件的基础上增加 print(f1.write('789')) f1.close() ab模式 a+模式 a+b模式和以上模式类似 #########文件的其它常用操作 f1.seek() #调整光标的位置 f1.tell() # 告诉光标的位置 with open('123.txt', encoding='utf-8') as f1 #不用主动关闭文件句柄
4.初识函数 函数:以功能为导向,解决重复代码多 可读性差的问题 函数的定义: def 关键字 函数名(): 函数体 函数执行:函数名() 函数的return:终止函数或给函数的执行者返回值。 函数的参数: #########实参角度 a.位置参数 按照顺序一一对应 def func1(a, b, c): print(a, b, c) func1(1, 2, 3) #a=1 b=2 c=3 b.关键字传参 一一对应 def func1(a, b, c): print(a, b, c) func1(c=1,b=2,a=3) c.混合参数(同时包含位置参数和关键字传参),关键字参数必须在位置参数后面 def func1(a, b, c): print(a, b, c) func1(1,2,c=3) ############形参角度 a.位置参数 按照顺序一一对应 def func1(a, b, c): print(a, b, c) func1(1, 2, 3) #a=1 b=2 c=3 b.默认参数,默认参数在位置参数的后面。 def func1(a, b, c=3): print(a, b, c) func1(1,2) #############动态参数 args:所有的位置参数,放在一个元组中.kwargs:所有的关键字参数,放在一个字典中 def func1(args, **kwargs): #函数的定义的时候 * 代表聚合 print(args) print(kwargs) func1([1, 2, 3],**{'name':'cc', 'age':'18'}) #函数的执行的时候 * 代表打散 形参的顺序:位置参数--*args--默认参数--**kwargs