python_learning_day3

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python_learning_day3相关的知识,希望对你有一定的参考价值。

4.集合操作
使用大括号
集合的作用:1.去重 2.关系测试
集合:
交集:取2个集合相同的部分。intersection,可以使用 &符号。
并集:取2个集合全部并去掉重复的部分。union,可以使用 | 符号。
差集:取第一个中有的,而第二个没有的集合difference,*in list1
not in list2可以使用 - 符号。
对称差集:取2个集合当中都没有的,symmetric_difference,可以使
用 ^ 符号。
子集:父集是否包含子集。issubset
父集:父集是否是子集的父集issuperset
交集为空测试:isdisjoint

集合的增删改查
list_1.add(999) 增加一项
list_1.update(1,2,3,)增加多项
list_1.remove("H")指定删除一项,如果删除的不存在将报错
list_1.discard("H")指定删除一项,如果删除的不存在不会报错
list_.pop()随机删除一项

list_1 = [1,4,5,6,7,8,9]
list_1 = set(list_1)
list_2 = set([2,3,6,8,10,11])


print(list_1.intersection(list_2))#交集
print(list_1.union(list_2))#并集
print(list_1.difference(list_2))#
print(list_1.symmetric_difference(list_2))

print(list_1.discard(1))
print(list_1)

intersection 交集
union 并集
difference 差集
subset 子集
upperset 父集
discard

5.件操作
文件操作的步骤: open - operation - close 3 site。
file_name = "python.txt"
date = open(file_name,encoding="utf-8")as f_j
open对象中可以使用“r”“w”“a”“r+”“w+”,读只读,写只写
,追加可以写不能读。r+即可以写又可以读。w+先创建一个文件再读
,需要光标tell(),再seek()回去。追加只能在后面。a+,可以追加读
模式。rb,是以二进制格式去读。

readlines只适合读小文件,
index,line in enumerate(f.readlines()):
f.tell()查看光标位置
f.seek()移动之前的位置
f.buffer()
f.errors()
f.fileno()返回编号
f.seekable()判断能否移动
f.readable()判断文件是否可读
f.writeable()判断文件是否可写
f.flush()刷新文件,等到内存满了才刷到内存中去
f.buffer()
import sys
sys.stdout.write("#")

进度条演示效果
import sys,time

for i in range(50)循环50个
sys.stdout.write("#")#调用sys模块标准输出
sys.stdout.flush()#强制刷新到硬盘里面。
time.sleep(0.1)#调用时间让效果变慢

f.truncate(),括号里面没有就清空,数字就表示0开始截断到第几个
数字。


文件的修改:
对原文件进行修改,会将之前的内容覆盖。如何进行修改?
1.要对文件进行修改,需要先把文件加载到内存内,再对内存中的字
符进行修改。修改完成之后再写入到原文件。这种情况不需要创建新
文件。

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


6.字符编码与转换
早期的叫ASCII,由26个英文字母加上特殊符合组成,占用1个字节,
由于文字的多种类型,后中国文字有一种识别码GB2312,GB1800。前
一种是7000个汉字组成,GB1800是扩展的增加到1W以上的字符。
unicode是万国码,能将大部分的国家文字进行转换识别。所占大小是
2个字节,由于文件超出一倍,原来使用ASCII的就不同意了。后面又
搞了一个UTF-8这样一个编码。是可变长的,英文字符占用一个字节,
中文占用3个字节。
UTF-8.DECODE -->UNICODE, UTF-8.ENCODE -->UNICODE 。
GBK.DECODE -->UNICODE,GBK.ENCODE -->UNICODE


7.函数
函数式编程方法:就是使用函数的方式,根据给出的参数等到相应的
结果的过程。
函数:使用DEF定义。在python中一般函数都有返回值。
return 后面元组中可以返回任意值:(NONE 0 NUMBER CHAR LIST DIC
TUPLE)
函数返回值的作用:在函数中可能很多行代码,对这个内容执行过程
中,给出一个值表示是否符合执行条件,来确保程序按预订结果运行


函数的参数:

1.可以传入*[]赋值给形参*args,他将多余的实参以元组的形式体现

2.可以使用**{}赋值给形参**kwargs,他把关键字以key、value的
方式存储在字典中。

*args:接受N个位置参数
**kwargs:接受N个关键字参数


9.局部变量&全局变量
局部变量:只在函数内生效,这个函数就是这个变量的作用域。

全局变量:在全局都生效的变量,也可以通过函数内定义global。
函数必须先调用了才生效,在def调用之前的代码先生效。

局部改全局:字符串和单独的整数不能修改,其它的列表、字典、集
合都能进行修改。

name = ["Alex","Jack","Rain"]

def change_name(name):
name[0] = "金角大王"
print(name)

change_name(name)
print(name)

10.递归:在函数内部,可以调用其它函数。如果一个函数在内部调用
自己本身,这个函数就叫递归函数。

递归特性:
1.必须有一个明确的结束条件
2.每次进入更深一层递归时,问题规模相比上次递归都应有所减少。
3.递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调
用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,
栈就会加一层栈帧,每当函数返回,栈就会减少一层栈帧,由于栈的
大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。)

python最大递归循环999次。
def calc(n):
print(n)
if int(n/2) > 0:
return calc(int(n/2))
print("-->: ",n)

calc(10)







































































































以上是关于python_learning_day3的主要内容,如果未能解决你的问题,请参考以下文章