python学习之day3学习笔记

一、集合

集合是一个无序的,不重复的数据组合,它的主要作用如下:

  • 去重,把一个列表变成集合,就自动去重了
  • 关系测试,测试两组数据之前的交集、差集、并集等关系
list_1=[1,2,3,3,3,34]
list_1=set(list_1)
print(list_1,type(list_1))#输出:{1, 2, 3, 34} <class 'set'>
#求交集
list_2=set([1,3,4,4,4,4])
print(list_1.intersection(list_2))#输出:{1, 3}
print(list_1&list_2)#输出:{1, 3}
#并集
print(list_1.union(list_2))
print(list_1|list_2)#输出:{1, 2, 3, 34, 4}
#差集
#在list_1中不在list_2中
print(list_1.difference(list_2))
print(list_1-list_2)#输出:{2, 34}
#在list_2中不在list_1中
print(list_2.difference(list_1))
print(list_2-list_1)#输出:{4}

#对称差集(并集减去交集)
print(list_1.symmetric_difference(list_2))
print(list_1^list_2)#输出:{2, 34, 4}

#判断是否为子集/父集
list_3=set([1,2])
print(list_1.issubset(list_2))#输出:False
print(list_3.issubset(list_1))#输出:True
print(list_1.issuperset(list_3))#输出:True

#添加元素
list_1.add(999)
print(list_1)#输出:{1, 2, 3, 34, 999}
list_1.update([888,666])
print(list_1)#输出:{1, 2, 3, 34, 999, 888, 666}

#删除元素
list_1.remove(999)
print(list_1)#输出:{1, 2, 3, 34, 888, 666}
集合基本操作

二、文件的读与写

对文件操作流程

  1. 打开文件,得到文件句柄并赋值给一个变量
  2. 通过句柄对文件进行操作
  3. 关闭文件
f=open("yesterday",'r')#文件句柄,读模式
f=open("yesterday2",'w')#新建一个文件,并写进去 注意!!如果文件原来存在的话,文件会被格式化
f=open("yesterday2",'a')#文件内容添加(append),不覆盖原来的文件
f=open("yesterday2",'r+')#读写模式
读、写、添加模式
f=open("yesterday",'r')#文件句柄,读模式
date=f.read()
print(date)#读文件
f=open("yesterday2",'w')#新建一个文件,并写进去 注意!!如果文件原来存在的话,文件会被格式化
f.write("我爱北京天安门,\n")
f.write("天安门上太阳升")
f=open("yesterday2",'a')#文件内容添加(append),不覆盖原来的文件
f.write("\n我爱北京天安门,,,,,\n")
f.write("天安门上太阳升")

f=open("yesterday",'r')
print(f.readline())#读第一行
for i in range(5):
    print(f.readline())#读五行


f=open("yesterday",'r')
#第十行输出分割线
for index,line in enumerate(f.readlines()):
    if index==9:
        print('---我是分割线---')
        continue
    print(line.strip())#strip把换行符去了

f=open("yesterday",'r')
#第十行输出分割线、效率高
count=0
for line in f:
    if count==9:
        print('---我是分割线---')
        count+=1
        continue
    print(line.strip())
    count+=1

f=open("yesterday",'r')
print(f.tell())#查看光标所在位置。输出:0
print(f.read(5))#读五个字符,输出:Someh
print(f.tell())#查看光标所在位置。输出:5
f.seek(0)#光标回到第一个位置

print(f.flush())#强制刷新

f=open("yesterday2",'a')
f.seek(10)
f.truncate(20)#截断
文件的基本操作
f=open("yesterday2","r")
f_new=open("yesterday2.bak","w")
for line in f:
    if "肆意的快乐等我享受" in line:
        line=line.replace("肆意的快乐等我享受","肆意的快乐等Alex享受")
    f_new.write(line)
f.close()
f_new.close()
修改文档内容

 

三、with语句

当with代码块执行完毕时,内部会自动关闭并释放文件资源

with open("yesterday2","r") as f:#自动关闭文件,
    print(f.readline())
    for line in f:
        print(line)
with open("yesterday2","r") as f,\
      open("yesterday2","r") as f2:#可以同时打开多个文件
View Code

四、函数、过程、函数式编码

1、面向对象》》类》》class
2、面向过程》》过程》》def
3、函数式编程》》函数》》def

#author = YanQi Ye
# coding=gbk
# -*- coding: utf-8 -*

def func1():#函数
    """testing1"""
    print('in the func1')
    return 0
def func2():#过程
    """testing2"""
    print('in the func2')
#调用,过程可以说是没用返回值的函数
x=func1()
y=func2()
基本调用
#author = YanQi Ye
# coding=gbk
# -*- coding: utf-8 -*
import time
def logger():
    time_format = '%Y-%m-%d %X'
    time_current = time.strftime(time_format)
    with open('a','a+')as f:
        f.write('%s end action\n' %time_current)
def test1():
    print('test1 starting action')
    logger()

def test2():
    print('test2 starting action')
    logger()

def test3():
    print('test3 starting action')
    logger()


test1()
test2()
test3()
基本调用2
#author = YanQi Ye
# coding=gbk
# -*- coding: utf-8 -*


#有参数,形参和实参应一一对应
def test1(x,y):
    print(x,y)
test1(1,2)#位置参数调用
test1(y=2,x=1)#关键字参数调用

#默认参数
def test1(x,y=2):
    print(x,y)
test1(1)#输出:1 2
test1(1,3)#输出:1 3

#参数组(实参个数不固定)
#把n个关键字参数转换为数组方式
def test1(*args):
    print(args)
test1(*[1,2,3,3,3,1])
#把n个关键字参数转换为字典方式
def test1(**kwargs):
    print(kwargs)
    print(kwargs['name'])#单独取值
test1(name='alex',age=8,sex='F')
test1(**{'name':'alex','age':8,'sex':'F'})
参数的使用

五、局部变量与全局变量

#author = YanQi Ye
# coding=gbk
# -*- coding: utf-8 -*
#school全局变量
school="123"
def change_name(name):
    global age
    age='23'#age变为全局变量,慎用!
    print("before change ",name)
    name="Alex Li"#name是局部变量,这个函数就是这个变量的作用域
    print("after change ",name)

name='Alex'
change_name(name)
print(name)
View Code

六、简单的递归

def calc(n):
    print(n)
    if int(n/2)>0:
        return calc(int(n/2))
calc(10)

七、高阶函数与进度条

高阶函数就是函数里调用其他函数

def add(x,y,f):
    return  f(x)+f(y)
res = add(3,-6,abs)
print(res)
简单的高阶函数

进度条忘记是哪个模块教的了。。。就先放这儿

import sys,time
for i in range(20):
    sys.stdout.write("#")
    sys.stdout.flush()#强制刷新
    time.sleep(0.1)
进度条
posted @ 2019-05-03 16:35  不怕秃头  阅读(109)  评论(0编辑  收藏  举报