python--sorted、filter、map

简介: 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]

相关文章
|
3月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
238 1
Python函数式编程-Filter
Python函数式编程-Filter
251 64
ES5常见的数组方法:forEach ,map ,filter ,some ,every ,reduce (除了forEach,其他都有回调,都有return)
ES5常见的数组方法:forEach ,map ,filter ,some ,every ,reduce (除了forEach,其他都有回调,都有return)
WK
|
Python
Python中format_map()方法
在Python中,`format_map()`方法用于使用字典格式化字符串。它接受一个字典作为参数,用字典中的键值对替换字符串中的占位符。此方法适用于从字典动态获取值的场景,尤其在处理大量替换值时更为清晰和方便。
WK
410 36
|
存储 大数据 Python
案例学Python:filter()函数的用法,高级!
`filter()`函数是Python中处理序列数据的强大工具,它允许我们高效地根据条件过滤元素。通过结合匿名函数、常规函数或直接利用Python的内置逻辑,`filter()`提供了灵活且高效的过滤机制,尤其在大数据处理和内存敏感的应用中展现出其价值。掌握 `filter()`的使用,不仅能提升代码的可读性和效率,还能更好地适应Python的函数式编程风格。
530 2
WK
|
Python
map和filter的区别是什么
`map()`和`filter()`均为Python中的高阶函数,前者针对可迭代对象中的每个元素执行指定操作,如数值翻倍或字符串转大写;后者则筛选出符合条件的元素,例如仅保留偶数或非空字符串。两者均返回迭代器,并可通过`list()`等函数转换为所需的数据结构。具体使用时,应依据实际需求和场景选择合适的函数。
WK
320 1
WK
map和filter的区别是什么
在编程中,`map` 和 `filter` 是处理数组或集合时常用的两个函数。`map` 用于将每个元素通过指定函数转换后生成新的数组,而 `filter` 则根据条件筛选出符合条件的元素组成新数组。两者的主要区别在于:`map` 的返回数组长度与原数组相同,但元素被转换;`filter` 的返回数组长度可能不同,只包含符合条件的元素。
WK
513 2
|
JavaScript 前端开发 索引
JS中常用的数组迭代方法(filter,forEach,map,every,some,find,findIndex)
这段代码和说明介绍了JavaScript中数组的一些常用方法。函数接收三个参数:`item`(数组项的值)、`index`(项的位置,可选)和`array`(数组本身,可选)。示例展示了如何使用`filter()`过滤非空项、`forEach()`遍历数组、`map()`处理并返回新数组、`every()`检查所有元素是否满足条件、`some()`检查是否存在满足条件的元素、`find()`获取首个符合条件的元素值以及`findIndex()`获取其索引位置。这些方法都不会修改原数组。
396 0
JS中常用的数组迭代方法(filter,forEach,map,every,some,find,findIndex)
|
JavaScript 前端开发
JavaScript 中 五种迭代数组的方法 every some map filter forEach
本文介绍了JavaScript中五种常用数组迭代方法:every、some、filter、map和forEach,并通过示例代码展示了它们的基本用法和区别。
|
安全 Java API
Java 8 流库的魔法革命:Filter、Map、FlatMap 和 Optional 如何颠覆编程世界!
【8月更文挑战第29天】Java 8 的 Stream API 通过 Filter、Map、FlatMap 和 Optional 等操作,提供了高效、简洁的数据集合处理方式。Filter 用于筛选符合条件的元素;Map 对元素进行转换;FlatMap 将多个流扁平化合并;Optional 安全处理空值。这些操作结合使用,能够显著提升代码的可读性和简洁性,使数据处理更为高效和便捷。
527 0

推荐镜像

更多