python之路,day3
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python之路,day3相关的知识,希望对你有一定的参考价值。
十八、集合
无序,不重复的数据组合
1. 去重
2. 关系测试
list_1 = [1, 4, 5, 7, 3, 6, 7, 9]
list_1 = set(list_1)
list_2 = set([2, 66, 0, 6, 22, 8, 4])
list_3 = set([1, 5, 7])
# 交集
# set([4, 6])
print list_1.intersection(list_2)
# 并集
# set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 66, 22])
print list_1.union(list_2)
# 差集
# set([1, 3, 9, 5, 7]) 1里有2里无
print list_1.difference(list_2)
# 子集-判断list1是不是2的子集
# False
print list_1.issubset(list_2)
# True
print list_3.issubset(list_1)
# 父集-判断list1是不是2的父集
# False
print list_1.issuperset(list_2)
# True
print list_1.issuperset(list_3)
# 对称差集,全集-交集
# set([0, 1, 2, 3, 5, 7, 8, 9, 66, 22])
print list_1.symmetric_difference(list_2)
# 判断是否有交集,没有返回True
# True
print list_2.isdisjoint(list_3)
# 交集符 &
print list_1 & list_2
# 并集符 |
print list_1 | list_2
# 差集符-1有2无
print list_1 - list_2
# 对称差集
print list_1 ^ list_2
# 添加一项
list_1.add(999)
# 添加多项
list_1.update([888, 777, 555])
# 测试x是否是a的成员
x in a
# 删除
pop() # 随意弹出一个值
# remove删除的值不存在时会报错
list_3.remove(7)
print list_3
# discard删除的值不存在不报错
list_3.discard(6)
print list_3
十九、文件操作
f = open("x","r",encoding="utf-8") # 默认以系统编码打开
data = f.read()
print data
r 读 w 写 a 追加(不可读)
"+" 表示可以同时读写某个文件
r+,读写 读原来的文件追加
w+,写读 先创建一个文件然后读写
a+,追加读
"b"表示处理二进制文件
rb 二进制文件读, 不可传编码格式
wb 二进制文件写
ab 二进制文件追加
f.readlines() #只适合读小文件 low loop
for index,line in enumerate(f.readlines()):
if index == 9:
print "-"*20
continue
print line.strip()
# 只保存一行,读一行删一行, 内存里只存一行,效率高, 文件为迭代器
count = 0
for line in f:
count += 1
if count == 10:
print "-"*20
continue
print line
f.read(50) 读50个字符
f.tell() 读出文件指针位置,以字符计数
f.seek(0) 回到某个位置,这里是开头
f.encoding() 输出文件编码
f.seekable() 判断能否移动,能返回True, 否返回False
f.readable() 是否可读
f.writeable() 是否可写
f.flush() 强制刷新,默认等文件缓存到一定大小再刷新到硬盘
# 输出到屏幕
import sys
sys.stdout.write("####")
truncate(10) #从开头到10字符的位置,之后的截断清空
在Python 2.7 后,with又支持同时对多个文件的上下文进行管理,即:
with open(‘log1‘) as obj1, open(‘log2‘) as obj2:
pass
二十、 字符编码与转码
utf8 是unicode的扩展集
utf-8 转成 gbk
s.decode("utf-8").encode("gbk")
解释:将s转换成unicode,此时需声明它之前是utf-8,然后转成gbk,需声明它现在要转换的编码
需知:
1.在python2默认编码是ASCII, python3里默认是unicode
2.unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节), so utf-16就是现在最常用的unicode版本, 不过在文件里存的还是utf-8,因为utf8省空间
3.在py3中encode,在转码的同时还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string
python2
#-*-coding:utf-8-*-
import sys
print(sys.getdefaultencoding())
msg = "我爱北京天安门"
msg_gb2312 = msg.decode("utf-8").encode("gb2312")
gb2312_to_gbk = msg_gb2312.decode("gbk").encode("gbk")
print(msg)
print(msg_gb2312)
print(gb2312_to_gbk)
python3
#-*-coding:gb2312 -*-
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.面向对象--类--class
2.面向过程--过程--def(没有返回值的参数)
3.函数式编程--函数--def
函数三大优点:
1.代码重用
2.保持一致性
3.可扩展性
二十二、参数
形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量
实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。
因此应预先用赋值,输入等办法使参数获得确定值
def test(x,y):
print(x)
print(y)
test(y=2,x=1) #关键参数,与形参顺序无关
test(1,2) #位置参数,与形参一一对应
test(3, y=2) #先按照位置参数来,关键参数不能写在位置参数前面
def test(x,y=2):
print(x)
print(y)
test(1,3)
默认参数特点:调用函数的时候,默认参数非必须传递
参数组:
#*args:接收N个位置参数,转换成元组的形式
def test(*args):
print(args)
test(1,2,3,4,5) #可接收多个实参,把多个实参放到元祖里
test(*[1,2,3,4,5]) # args=tuple([1,2,3,4,5]),与上面一致
# **kwargs: 接收N个关键字参数,转换成字典的形式
def test2(**kwargs):
print(kwargs)
test2(name=‘alex‘,age=8)
test2(**{‘name‘:‘alex‘,‘age‘:8})
def test3(name, **kwargs):
print(name)
print(kwargs)
test3(‘alex‘)
test3(‘alex‘,age=18,sex=‘m‘)
def test4(name, age=18, **kwargs):
print(name)
print(age)
print(kwargs)
test4(‘alex‘,sex=‘m‘,age=3)
test4(‘alex‘,4,sex=‘m‘)
以上是关于python之路,day3的主要内容,如果未能解决你的问题,请参考以下文章