page contents

Python函数式编程进阶:从map、filter到reduce的实战应用技巧!

写Python代码时,经常会处理列表、字典这样的数据集合。用循环来处理固然可以,但Python给我们提供了一些特别好用的函数式编程工具,用好了不仅代码更简洁,运行效率也不赚。今天咱们就一起来玩转这些函数式编程的小技巧。

attachments-2025-01-QqYECCW26775eeb95e209.pngPython代码时,经常会处理列表、字典这样的数据集合。用循环来处理固然可以,但Python给我们提供了一些特别好用的函数式编程工具,用好了不仅代码更简洁,运行效率也不赚。今天咱们就一起来玩转这些函数式编程的小技巧。

map函数:批量数据转换的利器

map函数就像是一个加工厂,你给它一条生产线(函数)和原材料(可迭代对象),它就把原材料一个个加工成你要的样子。

python运行复制

# 把一组数字都变成字符串

numbers = [1, 2, 3, 4, 5]

str_numbers = list(map(str, numbers))

print(str_numbers)  # ['1', '2', '3', '4', '5']


# 给一组数字都加上10

add_ten = lambda x: x + 10

result = list(map(add_ten, numbers))

print(result)  # [11, 12, 13, 14, 15]


温馨提示:map返回的是个迭代器,想看到结果要转成list哦!

filter函数:数据筛选小能手

filter就像一个筛子,把符合条件的留下,不符合的都筛掉。我记得刚学的时候老是和map搞混,后来发现filter输出的数据量都是越来越少的,这就好记多了。

python运行复制

# 筛选出偶数

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

evens = list(filter(lambda x: x % 2 == 0, numbers))

print(evens)  # [2, 4, 6, 8, 10]


# 筛选出非空字符串

words = ['hello', '', 'python', '  ', 'world', '']

valid_words = list(filter(str.strip, words))

print(valid_words)  # ['hello', 'python', 'world']


reduce函数:数据汇总的高手

reduce函数有点像是个压缩机,把一堆数据压缩成一个结果。不过用之前要先从functools模块导入,这个我第一次用的时候找了半天。

python运行复制

from functools import reduce


# 计算数字列表的乘积

numbers = [1, 2, 3, 4]

product = reduce(lambda x, y: x * y, numbers)

print(product)  # 24


# 连接字符串列表

words = ['Python', 'is', 'awesome']

sentence = reduce(lambda x, y: x + ' ' + y, words)

print(sentence)  # 'Python is awesome'


组合使用才是真功夫

这些函数单独用挺好,一起用更叼。看看这段代码,一行就搞定了一个小复杂的数据处理:

python运行复制

# 找出所有数字中偶数的平方和

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

result = reduce(lambda x, y: x + y,

               map(lambda x: x**2,

                   filter(lambda x: x % 2 == 0, numbers)))

print(result)  # 220 (2+4+6+8+10)


温馨提示:虽然组合起来很酷,但也别写得太复杂,可读性还是很重要的。要是觉得一行太长,完全可以拆成几步来写。

不过这些函数式编程的工具也不是万能的,有时候普通的for循环反而更清晰。关键是要根据具体场景选择最合适的方案,代码好懂比装酷更重要。

写Python这么久,我发现代码写得越简单越好,让别人一眼就能看懂你想干啥。这些函数式编程的工具就是帮我们把简单的事情写得更简单,千万别搞得太复杂。

掌握了这些技巧,处理数据集合的时候就有了更多选择,代码也能写得更优雅。记住,能用一行代码解决的问题,就不要写一堆循环啦!

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2025-01-02 09:41
  • 阅读 ( 34 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
小柒
小柒

1658 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1658 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章