• python学习:函数---内置函数(filter、map、sort)


    一、filter

    filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素。

    需要注意,在python3中返回的是一个可迭代对象,但是在python2中返回的是一个新的列表 。

    # 过滤出列表中的所有奇数
    def is_odd(x):
        return x % 2 == 1
    
    ret = filter(is_odd,[1, 4, 6, 7, 9, 12, 17])
    print(list(ret)) # [1, 7, 9, 17]
    
    # 过滤出1-100中平方根是整数的数
    from math import sqrt
    def sqr(x):
        return sqrt(x) % 1 == 0
    
    ret = filter(sqr,range(1,101))
    print(list(ret))

    二、map

    # 计算平方数
    def square(x):
        return x ** 2
    
    ret = map(square, [1, 2, 3, 4, 5])  # 计算列表各个元素的平方
    print(list(ret)) # [1, 4, 9, 16, 25]
    
    ret = map(lambda x: x ** 2, [1, 2, 3, 4, 5])  # 使用 lambda 匿名函数
    print(list(ret)) # [1, 4, 9, 16, 25]
    
    # 提供了两个列表,对相同位置的列表数据进行相加
    ret = map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8])
    print(list(ret)) #[3, 7, 11, 15, 19]

    三、sorted

    语法:
        sorted(iterable, key=None, reverse=False)
    参数说明:
        iterable -- 可迭代对象。
        key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
        reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
    返回值:
        返回重新排序的列表。
    l = [30,6,-10,88,-20,22]
    
    # 默认排序
    ret = sorted(l)
    print(l)    # 原始列表        [30, 6, -10, 88, -20, 22]
    print(ret)  # 排序后的新列表  [-20, -10, 6, 22, 30, 88]
    
    # 指定key排序
    ret = sorted(l,key=abs)  # 根据绝对值大小排序
    print(l)    # 原始列表        [30, 6, -10, 88, -20, 22]
    print(ret)  # 排序后的新列表  [6, -10, -20, 22, 30, 88]
    
    # 指定排序规则
    ret = sorted(l,key=abs,reverse= True)
    print(l)    # 原始列表        [30, 6, -10, 88, -20, 22]
    print(ret)  # 排序后的新列表  [88, 30, 22, -20, -10, 6]
    
    # 字典也可以排序,只不过字典排序只排key
    dic ={3: 'D', 2: 'B', 5: 'B', 4: 'E', 1: 'A'}
    ret = sorted(dic)
    print(ret)  # [1, 2, 3, 4, 5]
    
    ret1 = sorted(l, key=lambda x: x*-1)
    ret2 = sorted(l,reverse= True)
    print(ret1)   # [88, 30, 22, 6, -10, -20]
    print(ret2)   # [88, 30, 22, 6, -10, -20]

    之前学过一个sort方法,这个sort方法不是一个内置函数,它只是列表的一个方法,只有在使用列表的时候才可以使用,但是sorted内置函数对所有可迭代对象都可以使用。

    列表的sort方法是在原列表上排序,不会创建一个新列表。sorted内置函数是创建了一个新的列表来存储返回结果。

    l = [30,6,-10,88,-20,22]
    
    # 默认排序
    ret = sorted(l)
    print(l)    # 原始列表        [30, 6, -10, 88, -20, 22]
    print(ret)  # 排序后的新列表  [-20, -10, 6, 22, 30, 88]
    
    ret = l.sort()
    print(l)    # [-20, -10, 6, 22, 30, 88]
    print(ret)  # None
    
    l.sort(key=abs)
    print(l)    # [6, -10, -20, 22, 30, 88]
    l.sort(reverse=True)
    print(l)    # [88, 30, 22, 6, -10, -20]
    l.sort(key=abs,reverse=True)
    print(l)    # [88, 30, 22, -20, -10, 6]

    四、reversed

    # 字符串
    seqString = 'Runoob'
    print(list(reversed(seqString)))  # ['b', 'o', 'o', 'n', 'u', 'R']
    
    # 元组
    seqTuple = ('R', 'u', 'n', 'o', 'o', 'b')  # ['b', 'o', 'o', 'n', 'u', 'R']
    print(list(reversed(seqTuple)))
    
    # range
    seqRange = range(5, 9)  # [8, 7, 6, 5]
    print(list(reversed(seqRange)))
    
    # 列表
    seqList = [1, 2, 4, 3, 5]
    print(list(reversed(seqList)))  # [5, 3, 4, 2, 1]

    五、

  • 相关阅读:
    记录。短信网关.
    TP 笔记~
    FUCK IE FLASH(inline hook)
    API HOOK(MessageBoxA)
    inline hook MessageBox(2)
    c#线程中使用 dataset
    匈牙利算法解决二分图最大匹配
    C#:Array类的排序
    C#:属性
    C#:结构
  • 原文地址:https://www.cnblogs.com/Ryan-Fei/p/12202650.html
Copyright © 2020-2023  润新知