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]
原文地址:https://www.cnblogs.com/zouzou-busy/p/13020087.html