1.python3的divmod()内置函数
首先,函数的名字div 表示地板除法 5//2 = 2; mod表示取余数 5%2=1
所以divmod()函数:接收两个数字类型(非复数)参数,返回一个包含商和余数的元组(a // b, a % b)
举例子:
def my_divmod(a: int , b: int) -> tuple: """Validate divmod() function.""" return divmod(a, b) if __name__ == '__main__': dm = my_divmod(8, 3) print(dm)
2.itemgetter()函数
①导入
from operator import itemgetter
②用法
itemgetter 用于获取对象的哪些位置的数据,参数即为代表位置的序号值
注意:itemgetter 获取的不是值,而是定义了一个函数,通过该函数作用到目标对象上,取出目标对象对应维度的值
栗子1:获取一维 数据
from operator import itemgetter # 获取列表的一维数据 a = [1, 2, 3] b = itemgetter(1) # 定义一个函数b, 1表示函数b作用的对象的索引为1的值 print(b(a)) # 2 aa = [1, [2, 4, 5], 9] bb = itemgetter(1, 1) # 定义函数bb,获取对象的第1个域和第0个的值 print(bb(aa)) # ([2, 4, 5], [2, 4, 5]) print(bb(a)) # (2, 2)
栗子2:获取二维 数据
from operator import itemgetter # 获取列表的二维数据 ls = [[1, 2, 3], [4, 5, 6]] assert ls[0][1] == 2 # 就是获取的 二维数据 # 下面用itemgetter实现获取列表的二维数据(需要对其中各个子列表进行取数,因为itemgetter的对象是1维对象) cc = itemgetter(1, 0) for item in ls: result = cc(item) print(result)
结果:
(2, 1)
(5, 4)
3.groupby
①导入 from itertools import groupby
②用法:groupby()函数的有两个参数,第一个是可迭代对象,第二个是key
栗子1:groupby可以将相邻的重复元素挑出来放在一起
for key,group in itertools.groupby('AAAABBBBCCAA'): print(key,list(group) 输出如下: A ['A', 'A', 'A', 'A'] B ['B', 'B', 'B', 'B'] C ['C', 'C'] A ['A', 'A']
栗子2:按key分组:
from itertools import groupby things = [("animal", "bear"), ("animal", "duck"), ("plant", "cactus"), ("vehicle", "speed boat"), ("vehicle", "school bus")] for key, group in groupby(things, lambda x: x[0]): # things中的每个元祖,按照x[0]来分组,即元祖索引为0的元素是key;每个元祖就是一个group for thing in group: # print(thing) # 打印出来的是每个元祖 print("A %s is a %s." % (thing[1], key)) print("") """ A bear is a animal. A duck is a animal. A cactus is a plant. A speed boat is a vehicle. A school bus is a vehicle. """
class_data = [ ("class_1", "zhangsan", 98), ("class_1", "lisi", 93), ("class_2", "wanger", 89), ("class_2", "zhaowu", 86), ("class_3", "zhenliu", 90), ("class_4", "huangqi", 94) ] for key, group in groupby(class_data, key=lambda ix: ix[0]): print(key, list(group)) """ class_1 [('class_1', 'zhangsan', 98), ('class_1', 'lisi', 93)] class_2 [('class_2', 'wanger', 89), ('class_2', 'zhaowu', 86)] class_3 [('class_3', 'zhenliu', 90)] class_4 [('class_4', 'huangqi', 94)] """