一、set集合
集合是一个无序的,不重复的数据组合,它的主要作用如下:
去重,把一个列表变成集合,就自动去重了
-
关系测试,测试两组数据之前的交集、差集、并集等关系
# 创建数值集合
list_1 = set([1,2,3,6,9])
list_2 = set([5,6,7,8,9]) #交集(两个集合相同的部分)
list_1.intersection(list_2)
list_1 & list_2 #并集(合并两个列表,去重)
list_1.union(list_2)
list_1 | list_2 #差集(list_1中有list_2中没有的)
list_1.difference(list_2)
list_1 - list_2 #对称差集(两个列表中不相同的部分)
list_1.symmetric_difference(list_2)
list_1 ^ list_2 #子集(查list_2是否是list_1的子集)
list_2.issubset(list_1)
list_3 <= list_1 #父集(查list_1是否是list_2的父集)
list_1.issuperset(list_2)
list_1 >= list_3 #添加一项
list_1.add('567')
#添加多项
list_1.update([22,33,44]) #删除(使用remove()可以删除一项)
list_1.remove('6')
list_1.pop() #随机删除一项
二、文件操作
文件操作流程:
1.打开文件,得到文件句柄并赋值给一个变量
2.通过句柄对文件进行操作
3.关闭文件
打开文件的模式有:
- r,只读模式(默认)
- w,只写模式。【不可读;不存在则创建;存在则删除内容;】
- a,追加模式。【可读; 不存在则创建;存在则只追加内容;】
- r+,可读写文件。【可读;可写;可追加】
- w+,写读
- a+,同a(追加模式)
"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)
- rU
- r+U
"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注
- rb
- wb
- ab
open文件操作演示
f = open('data','r+',encoding='utf-8')
f.read() #读取文件所有内容
f.readline() #读取一行内容
f.seek() #将光标跳到某个位置
f.tall() #查看光标所在位置
f.lush() #实时刷新
f.write() #向文件中写入
f.close() #关闭文件
with语句
为了避免打开文件后忘记关闭,可以通过管理上下文,即:
with open('log','r') as f:
....
如此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源。
在Python 2.7 后,with又支持同时对多个文件的上下文进行管理,即:
with open('log1') as obj1, open('log2') as obj2:
pass
三、字符编码与转码
1.首先通过编码【decode】转换为Unicode编码
2.然后通过解码【encode】转换为想要的编码
import sys
print(sys.getdefaultencoding())
msg = "我爱北京*"
#msg_gb2312 = msg.decode("utf-8").encode("gb2312")
msg_gb2312 = msg.encode("gb2312") #默认就是unicode,不用再decode,喜大普奔
gb2312_to_unicode = msg_gb2312.decode("gb2312")
gb2312_to_utf8 = msg_gb2312.decode("gb2312").encode("utf-8")
print(msg)
print(msg_gb2312)
print(gb2312_to_unicode)
print(gb2312_to_utf8)
四、函数
函数基本语法及特性
1.函数是什么?
函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,具体区别,我们后面会讲,编程中的函数在英文中也有很多不同的叫法。在BASIC中叫做subroutine(子过程或子程序),在Pascal中叫做procedure(过程)和function,在C中只有function,在Java里面叫做method。
2.定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可
3.特性:
减少重复代码
使程序变的可扩展
使程序变得易维护
-
定义语法
def sayhi():#函数名
print("Hello, I'm nobody!")
sayhi() #调用函数 -
可以带参数
#下面这段代码
a,b = 5,8
c = a**b
print(c) #改成用函数写
def calc(x,y):
res = x**y
return res #返回函数执行结果 c = calc(a,b) #结果赋值给c变量
print(c)
函数参数与局部变量
形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量
实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值