zoukankan      html  css  js  c++  java
  • divmod()、itemgetter()、groupby()

    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)]
    """
  • 相关阅读:
    css常用属性记录
    js字符串常用方法总结
    mongoose基本操作
    本地存储API
    历史相关API
    自定义播放器
    HTML5全屏操作API
    HTML5自定义属性操作
    HTML5类操作
    案例:3D切割轮播图
  • 原文地址:https://www.cnblogs.com/ananmy/p/14814910.html
Copyright © 2011-2022 走看看