python学习第三天

一 集合

集合是一种无序的元素唯一的数据类型

1列表转换为集合

list = [1,2,3,3,6,8,9,12,12]

list = set(list)

2关系测试

set1 ={1,3,5,7,9}

set2 ={2,4,6,9}

set3 ={1,3}

交集

print(set1.intersection(set2))

print(set1 & set2)

并集

print(set1.union(set2))

print(set1 | set2)

差集

print(set1.difference(set2))   输出集合set1中存在而集合set2中不存在的元素

print(set1 - ste2)

对称差集

print(set1.symmetric_difference(set2)) 排除set1和set2中都存在的元素

print(set1 ^ set2)

子集

print(set3.issubset(set1))

父集

print(set1.issuperset(set3))

测试两个集合是否没有交集

print(set1.isdisjoint(set3))

3集合操作

添加

set1.add(45)

set1.update([23,23,45])

删除

set1.remove(1)

set1.pop()  随机删除一个元素并显示被删除的元素

set1.discard(33)  删除指定元素,如果该元素在集合中则删除,不在集合中则返回None

求长度

len(set1)

二 文件操作

打开文件

使用open方法:f = open('/root/list.txt',r,encoding="utf-8")

其中open方法中第一个参数是文件路径,第二个参数为文件打开模式,第三个元素为打开文件时使用的字符编码。打开模式有a、a+、r、r+、rb、w、w+、wb,a为写模式,只能写不能读并且写的内容会追加到文件末尾;r为只读模式,只能读不能写,不会清空文件但是文件不存在时会报错;w为写模式,只能写不能读,但是会将文件内容清空后再写入内容。

写文件

data = f.write("asd")

读文件

data = f.read(5)  指定读取的字符数

data = f.readline()

data = f.readlines()  将文件内容以列表形式全部输出

for line in f:      一行一行读取文件,并且内存中只有读取的那行内容

     print(line)

关闭文件

f.close()

查询文件指针位置

f.tell()  输出的是已读取得字符数

调整文件指针位置

f.seek(0) 将光标移到指定的字符数的位置

打印文件编码

f.encoding

实时刷新

f.flush() 将缓存的数据实时写入硬盘

截取文件

f.truncate(20) 从文件开始位置截取指定字符数,其余内容清空

修改文件

f = open('test','r',encoding='utf-8')
f_new = open('test1','w',encoding='utf-8')
for line in f:
    if "ok" in line:
       line = line.replace("ok","no")
    f_new.write(line)
f.close()
f_new.close()

with方法

with open() as f,\

       open() as f2:   用with方法打开文件当语句执行结束时会自动关闭文件,且可以同时打开多个文件,文件之间用逗号分隔

sys、time模块

import sys,time
for i in range(50):
    sys.stdout.write("#")  不换行输出所有结果
    sys.stdout.flush()
    time.sleep(0.1)   每次输出间隔0.1秒

 

三 字符编码与转码

不同字符编码间转换都需要先解码(decode)成unicode,再转码(encode)成目标编码,并且在python3.X中数据转码后数据类型都会变成bytes类型。注意,在不申明字符编码时,python2.X的默认编码为ASCII码,python3.X中默认编码为Unicode。另外需要知道当前的默认字符编码时,可以通过sys模块的getdefaultencoding()方法获取

 

四 函数

函数的优点

代码重用、保持一致性、可扩展

函数定义

def 函数名(参数):

     '''函数功能说明'''

     函数体

函数返回值

返回值作用是输出函数运行结果

返回值个数为0,返回None

返回值个数为1,返回指定的值或者其他函数的内存地址

返回值个数大于1,返回一个元组

 

函数参数

函数定义中的参数为形参,调用函数时赋值的参数为实参,函数中赋值给形参的值叫默认参数,调用函数时如果没有传递参数给函数就会使用默认参数。*args,可以接收多个位置参数值,以元组形式显示;**kwargs,使用关键字形式传递参数值,结果以字典的形式显示,可接收多个参数.形参定义时,*args、**kwargs必须写在最后

def test(x,y):

    print(x)

    print(y)

test(1,2)   使用位置参数传递参数值,传递时按从左向右的顺序传递

test(y=2,x=1)   使用关键字参数传递参数值,传递时与顺序无关

test(1,y=2)   同时使用位置参数和关键参数字传递参数值,位置参数必须在关键字参数前面

 

def test(*args):

     print(args)

test(1,2,3)

test(*[1,2,3])

 

def test(**kwargs):

    print(kwargs['name'])

    print(kwargs['age'])

 

test("name"="alex","age"=22)

test(**{"name":"alex","age":22})

 

变量作用域

函数中定义的变量只在函数中生效即局部变量,但是用global可以将局部变量声明为全局变量。在程序开头定义的变量在整个程序中生效即全局变量。列表、字典、集合、类等类型的全局变量值可以被局部变量修改

 

递归

必须有结束条件

每进入更深一层递归时,问题规模必须更小

递归效率不高,递归过多会导致栈溢出

def calc(n):

    print(n)

    if int(n/2) >0:

       return calc(int(n/2))

    print('->',n)

calc(10)

 

高阶函数

将一个函数作为参数传给另一个函数

def add(x,y,f):

     return f(x)+f(y)

res = add(3,-6,abs)

 

posted @ 2017-03-20 17:14  魅力宁波  阅读(140)  评论(1)    收藏  举报