码迷,mamicode.com
首页 > 编程语言 > 详细

python之路,day3

时间:2017-05-31 19:06:51      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:关系   trunc   输入   tin   encode   指针   write   方法   add   

十八、集合

无序,不重复的数据组合

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

标签:关系   trunc   输入   tin   encode   指针   write   方法   add   

原文地址:http://www.cnblogs.com/keepgoingrain/p/6925184.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!