221 lines
6.9 KiB
Plaintext
221 lines
6.9 KiB
Plaintext
|
||
=================================
|
||
Notes
|
||
Author: Flora Chen
|
||
-_- -_- -_- -_- -_- -_- -_- -_-
|
||
=================================
|
||
|
||
******内置函数*****
|
||
1. min()获取最小值;只能对一组数据进行操作,不能对字符串进行操作。
|
||
示例:
|
||
tu = (11, 22, 33)
|
||
print('获取元组中的最小值:', min(tu))
|
||
li = [345, 789, 890]
|
||
print('获取列表中的最小值:', min(li))
|
||
dic = {'a': 1, 'b': 9}
|
||
print(min(dic.values()))
|
||
|
||
2. max()获取最大值;只能对一组数据进行操作,不能对字符串进行操作。
|
||
示例:
|
||
tu = (11, 22, 33)
|
||
print('获取元组中的最大值:', max(tu))
|
||
li = [345, 789, 890]
|
||
print('获取列表中的最大值:', max(li))
|
||
dic = {'a': 1, 'b': 9}
|
||
print(max(dic.values()))
|
||
|
||
3. sum()求和;只能对一组数据进行操作,不能对字符串进行操作。
|
||
示例:
|
||
tu = (11, 22, 33)
|
||
print('获取元组中元素之和:', sum(tu))
|
||
li = [345, 789, 890]
|
||
print('获取列表中元素之和:', sum(li))
|
||
dic = {'a': 1, 'b': 9}
|
||
print(sum(dic.values()))
|
||
|
||
4. enumerate()获取数据的索引和值
|
||
示例:
|
||
dic = {'a': 1, 'b': 9}
|
||
li = [345, 789, 890]
|
||
tu = (11, 22, 33)
|
||
print(list(enumerate(tu)))
|
||
# 输出结果:[(0, 11), (1, 22), (2, 33)]
|
||
|
||
print(list(enumerate(li)))
|
||
# 输出结果:[(0, 345), (1, 789), (2, 890)]
|
||
|
||
print(list(enumerate(dic)))
|
||
# 输出结果:[(0, 'a'), (1, 'b')]
|
||
|
||
5. filter(参数1, 参数2)
|
||
参数1:函数(过滤的规则)
|
||
参数2:需要过滤的数据
|
||
filter会根据参数-函数的返回值是True还是False来决定数据要不要过滤
|
||
示例:
|
||
li = [11, 22, 34, 6, 345, 789, 890]
|
||
def fun(x):
|
||
return x > 50
|
||
res = filter(fun, li)
|
||
print(list(res))
|
||
|
||
6. 匿名函数:lambda 函数参数: 返回值
|
||
应用场景:一般用于非常简单的函数(函数内部只有一行代码)
|
||
比如:结合过滤器filter()使用(当成别的函数的参数)
|
||
示例:
|
||
li = [11, 22, 34, 6, 345, 789, 890]
|
||
res = filter(lambda x: x>50, li)
|
||
print(list(res))
|
||
|
||
li1 = [11, 22, 34, 6, 345, 789, 890]
|
||
li2 = [11, 22, 33, 44, 565, 890, 789, 5, 6, 7, 8]
|
||
print(list(filter(lambda x: x in li1, li2)))
|
||
|
||
print(list(filter(lambda x: x % 5 == 0, range(101))))
|
||
|
||
7. eval():能够识别字符串中的有效python表达式
|
||
示例:
|
||
str1 = "{'a': 1, 'b': 2, 'c': 3}"
|
||
print(type(str1))
|
||
# 输出结果:<class 'str'>
|
||
print(type(eval(str1)))
|
||
# 输出结果:<class 'dict'>
|
||
|
||
str2 = "[11, 22, 33, 44]"
|
||
print(type(eval(str2)))
|
||
# 输出结果:<class 'list'>
|
||
|
||
# 如果eval需要识别的字符串里面是个变量名,会打印出变量对应的值
|
||
b = 111
|
||
str3 = 'b'
|
||
print(eval(str3))
|
||
# 输出结果:111
|
||
|
||
# 注意点:只能去掉一层引号
|
||
str4 = "'bcd'"
|
||
print(eval(str4))
|
||
# 输出结果:bcd
|
||
|
||
8. zip()聚合打包
|
||
注意:zip对象只能进行一次强制转换
|
||
示例:
|
||
li1 = ['name', 'age', 'gender']
|
||
li2 = ['flora', 18, 'female']
|
||
res = zip(li1, li2)
|
||
print(dict(res))
|
||
# 输出结果:{'name': 'flora', 'age': 18, 'gender': 'female'}
|
||
res1 = zip(li1, li2)
|
||
print(list(res1))
|
||
# 输出结果:[('name', 'flora'), ('age', 18), ('gender', 'female')]
|
||
|
||
# 按照顺序一一对应,长度不一致的情况下,只取最短的
|
||
li3 = ['name', 'age', 'gender', 'info']
|
||
li4 = ['flora', 18, 'female']
|
||
res2 = zip(li3, li4)
|
||
print(dict(res2))
|
||
# 输出结果:{'name': 'flora', 'age': 18, 'gender': 'female'}
|
||
res3 = zip(li3, li4)
|
||
print(list(res3))
|
||
# 输出结果:[('name', 'flora'), ('age', 18), ('gender', 'female')]
|
||
|
||
# zip扩展使用
|
||
示例:
|
||
li1 = [11, 22, 33, 44]
|
||
li2 = [1, 2, 3, 4, 5]
|
||
li3 = [111, 222, 333, 444, 555]
|
||
li4 = [11, 12, 13, 14, 15]
|
||
|
||
res1 = zip(li1, li2, li3, li4)
|
||
print(tuple(res1)) # 输出结果:[(11, 1, 111, 11), (22, 2, 222, 12), (33, 3, 333, 13), (44, 4, 444, 14)]
|
||
|
||
res2 = zip(li1, li2, li3, li4)
|
||
print(list(res2)) # 输出结果:((11, 1, 111, 11), (22, 2, 222, 12), (33, 3, 333, 13), (44, 4, 444, 14))
|
||
|
||
res3 = zip(li1, li2, li3, li4)
|
||
print(dict(res3)) # 报错:ValueError: dictionary update sequence element #0 has length 4; 2 is required
|
||
|
||
******文件的操作*****
|
||
1. 打开文件
|
||
open(参数1, 参数2, encoding='utf8')
|
||
参数1:文件名/文件路径
|
||
参数2:文件打开的模式
|
||
文件打开的模式:
|
||
r:读取文件;文件不存在会报错。
|
||
a:追加写入, 在文件后面写入新的内容,原有内容不变;文件不存在会新建一个。
|
||
w:覆盖写入, 覆盖原有文件内容,写入新的内容;文件不存在会新建一个。
|
||
|
||
# 以下三种模式是以二进制的模式打开文件(常用于图片视频等文件的操作)
|
||
rb:读取文件;文件不存在会报错。
|
||
ab:追加写入, 在文件后面写入新的内容,原有内容不变;文件不存在会新建一个。
|
||
wb:覆盖写入, 覆盖原有文件内容,写入新的内容;文件不存在会新建一个。
|
||
|
||
文件读写操作的模式(扩展):
|
||
r+:读取文件并写入内容;文件不存在会报错。
|
||
a+:读取文件并追加写入, 在文件后面写入新的内容,原有内容不变;文件不存在会新建一个。
|
||
w+:读取文件并覆盖写入, 覆盖原有文件内容,写入新的内容;文件不存在会新建一个。
|
||
|
||
# 以下三种模式是以二进制的模式打开文件并写入内容(常用于图片视频等文件的操作)
|
||
rb+:读取文件并写入内容;文件不存在会报错。
|
||
ab+:读取文件并追加写入, 在文件后面写入新的内容,原有内容不变;文件不存在会新建一个。
|
||
wb+:读取文件并覆盖写入, 覆盖原有文件内容,写入新的内容;文件不存在会新建一个。
|
||
|
||
2. 读取文件
|
||
文件读取的方法:
|
||
read()读取文件中所有的内容
|
||
readline()读取一行内容
|
||
readlines()按行读取所有内容,返回一个列表
|
||
|
||
3. 关闭文件
|
||
关闭文件:
|
||
close()
|
||
|
||
4. 文件写入
|
||
文件写入的方法:
|
||
write()
|
||
|
||
# -------------- 基本读取操作 ---------------------
|
||
示例:
|
||
# 打开文件 encoding='utf8'是可选参数
|
||
# f = open(file='flora_0213_notes.txt', mode='r', encoding='utf8')
|
||
f = open('flora_0213_notes.txt', 'r', encoding='utf8')
|
||
# 读取文件
|
||
content = f.read()
|
||
# 打印文件内容
|
||
print(content)
|
||
# 关闭文件
|
||
f.close()
|
||
|
||
# -------------- 指定路径读取 ----------------------
|
||
示例:
|
||
f = open(r'E:\PycharmProject\ChyClass\UITest\Test.py', 'r', encoding='utf8')
|
||
print(f.readlines())
|
||
f.close()
|
||
|
||
# -------------- 写入文件 ----------------------
|
||
示例:
|
||
f = open('test4.txt', 'w', encoding='utf8')
|
||
f.write('4444' + '\n')
|
||
f.close()
|
||
|
||
# -------------- 读取写入图片----------------------
|
||
示例:
|
||
# 读取图片
|
||
f = open('picture.jpg', 'rb')
|
||
content = f.read()
|
||
print(content)
|
||
# 写入图片
|
||
f2=open('picture.jpg', 'wb')
|
||
f2.write(content)
|
||
f.close()
|
||
f2.close()
|
||
|
||
5. 文件上下文管理器对象
|
||
with 语句
|
||
语法格式:
|
||
with open(文件名,打开模式) as 接收文件句柄的变量:
|
||
# 文件的读写操作
|
||
|
||
使用with操作文件的优点:不用自己关闭文件,文件会自动关闭。
|
||
|
||
示例:
|
||
with open('test.txt', 'r', encoding='utf8') as f:
|
||
print(f.read()) |