1、zip 将两个可迭代对象转化为以元祖为元素的列表
1 a = 'abcd' 2 b = '1234' 3 print(list(zip(a, b))) # [('a', '1'), ('b', '2'), ('c', '3'), ('d', '4')] 4 print(type(list(zip(a, b))[0])) # <class 'tuple'>
2、max 在 dic 里的用法
1 c = [{"name": 'dog', "age": 5}, 2 {"name": 'pig', "age": 4}, 3 ] 4 # 找出name最大的动物(ascii码) 5 print(max(c, key=lambda dic: dic["name"])) # {'name': 'pig', 'age': 4} 6 # 找出年龄最大的动物 7 print(max(c, key=lambda dic: dic["age"])) # {'name': 'dog', 'age': 5}
此处lambda为匿名函数;lambda 参数列表:关于参数的表达式(表达式只能有一行,输入参数列表,输出表达式的计算结果)
max本质上是对传入的可迭代对象进行for循环比较(注意,1、不同数据类型无法进行比较;2、元素间比较是按位置顺序依据ASCII码进行比较),然后取出最大值。同时max支持传入关键字key用做比较依据
3、chr 将数字按ASCII码转换为相应元素;ord则相反(元素转数字)
4、pow 两个参数是次幂,三个参数是次幂取余
print(pow(3, 3)) # 3**3=27 print(pow(3, 3, 2)) # (3**3)%2=1
5、reversed 可迭代对象逆序;sorted 排序(本质上是在比较大小,同类型才支持比较)
d = { "da": 500, "bb": 200, "ac": 1000, } # 按key从小到大排序 print(sorted(d)) # ['ac', 'bb', 'da'] # 按值从小到大排序 print(sorted(d, key=lambda key: d[key])) # ['bb', 'da', 'ac']
6、reduce(func, list)
from functools import reduce b = [5,4,6,7,8,9] print(reduce(lambda x,y:x+y, b, 3)) #42 # reduce() 函数会对参数序列中元素进行累积
7、filter(过滤方法函数,可迭代对象)
a = ['kill_sb', 'catch'] c = filter(lambda x: x.endswith('sb'), a) # filter返回的是一个列表对象 print(c) # <filter object at 0x000002606F615100> print(list(c)) # ['kill_sb']
8、文件指针(只有read是以字符的形式,其余的都是以字节形式)。
seek用于指定文档 指针的位置(以rb方式打开文件),seek(-10,2)参数2表示倒序,-10表示倒数第10个位置;
tell用于获取当前指针所在的(字节)位置;
utf-8格式的汉字占3个字节(若先把指针移到1或2,然后读取文件时会乱码或报错:无效的开始字节);
Windows里的回车实际上是“\r\n”(占两个字节,查看方法:打开文件的open里指定newline=")
9、truncate 文件截取(是一种写的方式)注意文件打开时若是w+,则会先清空文件内容,再写入
10、遍历大文件的内容方法:
# 获取log文件的最后一行 with open("ger.log", "rb") as f: for i in f: # 此处直接用f,遍历一行读取一行;若使用的是f.readlines() 则会把整个文件全部读取到内存里 offs = -100 # 偏移量 while True: f.seek(offs, 2) data = f.readlines() if len(data) > 1: # 不止一行 print(data[-1].decode("utf-8")) # 获取最后一行 break else: offs *= 2
11、f.flush()将文件内容从内存写入到磁盘
f.encoding 查看使用open打开文件的编码
f.tell() 查看当前打开文件的指针位置
f.seek(3) 将文件指针移到到第三个字节(seek默认是从0开始);
f.seek(3,1)表示将指针从当前位置向后移动3个字节
f.seek(-5,2)表示将指针从最后倒序向前移动5个字节位置(倒序用负数)
f.truncate(10) 保留截取的前10个字节 (不要用W或W+的方式读取——会清空数据)