zoukankan      html  css  js  c++  java
  • python--sorted、filter、map

    sorted

    排序函数.

    • 语法: sorted(Iterable, key=None, reverse=False)
    • Iterable: 可迭代对象
    • key: 排序规则(排序函数), 在sorted内部会将可迭代对象中的每一个元素传递给这个函数的参数. 根据函数运算的结果进行排序
    • reverse: 是否是倒序. True: 倒序, False: 正序
    lst = [5, 7, 6, 12, 1, 13, 9, 18, 5]
    lst.sort()  # sort是list里面的一个方法
    print(lst)

    结果:

    [1, 5, 5, 6, 7, 9, 12, 13, 18]

    倒序在排下

    lst = [5, 7, 6, 12, 1, 13, 9, 18, 5]
    ll = sorted(lst, reverse=True)  # 内置函数. 返回给你一个新列表  新列表是被排序的
    print(ll)

    结果:

    [18, 13, 12, 9, 7, 6, 5, 5, 1]

    给列表排序. 根据字符串的长度进行排序

    lst = ["大阳哥", "尼古拉斯", "赵四", "刘能", "广坤", "谢大脚"]
    
    
    def func(s):
        return len(s)  # 返回数字
    
    
    ll = sorted(lst, key=lambda s: len(s))  # lambda函数等价于上面的func函数
    print(ll)

    结果:

    ['赵四', '刘能', '广坤', '大阳哥', '谢大脚', '尼古拉斯']

    ll = sorted(lst, key=lambda s:s.count('a')) # 内部. 把可迭代对象中的每一个元素传递给func

    lst = [
        {'id': 1, 'name': '张三', 'age': 18},
        {'id': 2, 'name': '李四', 'age': 58},
        {'id': 3, 'name': '王五', 'age': 38},
        {'id': 4, 'name': '赵六', 'age': 48},
        {'id': 5, 'name': '女神', 'age': 18}
    ]
    
    ll = sorted(lst, key=lambda dic: dic['age'], reverse=True)
    print(ll)

    结果:

    [{'id': 2, 'name': '李四', 'age': 58}, {'id': 4, 'name': '赵六', 'age': 48}, {'id': 3, 'name': '王五', 'age': 38}, {'id': 1, 'name': '张三', 'age': 18}, {'id': 5, 'name': '女神', 'age': 18}]

    filter

    筛选函数

    • 语法: filter(function. Iterable)
    • function:用来筛选的函数. 在filter中会自动的把iterable中的元素传递给function. 然后根据function返回的True或False来判断是否保留此项数据
    • Iterable: 可迭代对象
    lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    ll = filter(lambda i: i % 2 == 1, lst)
    #  第一个参数. 函数. 将第二个参数中的每一个元素传给函数. 函数如果返回True, 留下该元素.
    print("__iter__" in dir(ll))
    print("__next__" in dir(ll))
    print(list(ll))

    结果:

    True
    True
    [1, 3, 5, 7, 9]
    lst = [
        {'id': 1, 'name': '张三', 'age': 18},
        {'id': 2, 'name': '李四', 'age': 58},
        {'id': 3, 'name': '王五', 'age': 38},
        {'id': 4, 'name': '赵六', 'age': 48},
        {'id': 5, 'name': '女神', 'age': 18}
    ]
    
    print(list(filter(lambda dic: dic['age'] > 40, lst)))

    结果:

    [{'id': 2, 'name': '李四', 'age': 58}, {'id': 4, 'name': '赵六', 'age': 48}]

    map

    映射函数

    • 语法: map(function, iterable) 可以对可迭代对象中的每个元素进行映射. 分别去执行function
    lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    it = map(lambda i: i * i, lst)  # 把可迭代对象中的每一个元素传递给前面的函数进行处理. 处理的结果会返回成迭代器
    print(list(it))

    结果:

    [1, 4, 9, 16, 25, 36, 49, 64, 81]
    lst1 = [1, 2, 3, 4, 5]
    lst2 = [2, 4, 6, 8]
    print(list(map(lambda x, y: x + y, lst1, lst2)))  # 如果函数中有多个参数. 后面对应的列表要一一对应

    结果:

    [3, 6, 9, 12]
  • 相关阅读:
    创建者模式 -- 单例模式(反射&序列化)
    设计模式(总)
    并不是static final 修饰的变量都是编译期常量
    内部类和静态内部类的加载顺序
    所有的Java虚拟机必须实现在每个类或接口被Java程序 “ 首次主动使用 ” 时才初始化他们
    24 shell 管道命令与过滤器
    26 bash shell中的信号
    25 Linux中的信号
    23 shell 进程替换
    22 shell组命令与子进程
  • 原文地址:https://www.cnblogs.com/zouzou-busy/p/13020087.html
Copyright © 2011-2022 走看看