前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >30 秒掌握 Python map/filter/reduce

30 秒掌握 Python map/filter/reduce

作者头像
数据STUDIO
发布2024-04-26 09:48:38
1000
发布2024-04-26 09:48:38
举报
文章被收录于专栏:数据STUDIO数据STUDIO

map(function, iterable) -- 10 秒

map 函数接收 1)一个函数和 2)一个可迭代元素。函数的目的是对可迭代的每个元素(想想列表)进行某种转换。然后,它将函数应用到可迭代表中的每个元素,并返回一个新的可迭代表。

代码语言:javascript
复制
mylist = [1, 2, 3, 4]

def add100(n):
  return n + 100

newlist = list(map(add100, mylist))
print(newlist)

# [101, 102, 103, 104]

在这里,我们有一个简单的函数 add100(n) ,它接收一个数字 n 并简单地返回 n+100

  • add100 函数应用于 mylist 中的每个元素
  • add100(1) 返回 101
  • add100(2) 返回 102
  • add100(3) 返回 103
  • 添加 100(4)返回104
  • 因此返回 [101,102,103,104]

filter(function, iterable) --10 秒钟

filter 函数接收 1) 一个函数和 2) 一个可迭代元素。函数的目的是决定在新的可迭代表中保留或丢弃哪些可迭代表。它不会对元素进行任何转换。

代码语言:javascript
复制
mylist = [1, 2, 3, 4, 5, 6, 7, 8]

def larger5(n):
  return n > 5

newlist = list(filter(larger5, mylist))
print(newlist)

# [6, 7, 8]

在这里,我们有一个函数 larger5(n) 接收数字 n 并在 n 大于 5 时返回 True,否则返回 False。

  • 函数 larger5(n) 应用于 mylist 中的每个元素
  • 每次函数调用返回 True 或 False
  • 如果返回 True,则保留原始元素
  • 如果返回 False,则丢弃原始元素
  • larger5(1) 返回 False
  • larger5(2) 返回 False
  • larger5(3) 返回 False
  • larger5(4) 返回错误信息
  • larger5(5) 返回错误信息
  • larger5(6) 返回 true
  • larger5(7) 返回 True
  • larger5(8) 返回 True
  • 1、2、3、4、5 返回 False,因此它们被丢弃
  • 只有 6, 7, 8 返回 True,因此只保留它们
  • 因此返回 [6,7,8]

reduce(function, iterable) --10 秒

代码语言:javascript
复制
mylist = [1, 2, 3, 4, 5]
total = 0
for n in mylist:
  total += n

print(total) # 15

下面是将 mylist 中的所有数字相加的一些基本代码。

reduce 函数接收 1) 一个函数和 2) 一个可迭代元素。该函数的目的是以某种方式将所有元素浓缩为一个值。最简单的例子就是加法

代码语言:javascript
复制
mylist = [1, 2, 3, 4, 5]

from functools import reduce

def add(a, b):
  return a + b

result = reduce(add, mylist)
print(result)

# 15

在这里,我们有一个简单的函数 add(a,b),简单地返回 a+b

  • 该函数应用于每一对元素(累计)
  • add(1, 2) 返回 3
  • add(3, 3) 返回 6
  • add(6, 4) 返回 10
  • add(10, 5) 返回 15
  • 这就是我们最后得到 15 的原因
代码语言:javascript
复制
# 举一反三

fruits = ['apple', 'orange', 'pear', 'pineapple']

def add(a, b):
  return a + '-' + b

from functools import reduce

result = reduce(add, fruits)
print(result)

# apple-orange-pear-pineapple
  • add('apple', 'orange') 返回'apple-orange'
  • add('apple-orange', 'pear') 返回'apple-orange-pear'
  • 添加('apple-orange-pear', 'pineapple')返回'apple-orange-pear-pineapple'
  • 这就是我们最后得到'apple-orange-pear-pineapple'的原因
本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-23,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 数据STUDIO 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • map(function, iterable) -- 10 秒
  • filter(function, iterable) --10 秒钟
  • reduce(function, iterable) --10 秒
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com