Python高级用法总结(8)-函数式编程

wx614070971eedb 2021-09-15 09:50:47
Python for循环 函数式编程 迭代 匿名函数


Python混合支持多种编程范式,对于函数式编程,Python提供了一整套进行函数式编程的工具,如map、filter以及reduce等。

一、在可迭代对象上映射函数-map

比如实现一个列表的简单操作,给列表中的每个元素增加10。可以简单地使用for循环来更新一个列表中所有数字:

 

  •  
li = [1,2,3,4,5]up = []for x in li: up.append(x+10)print(up)
  • 1.
  • 1.
  • 1.
  • 1.
  • 1.

Python结果如下:

Python高级用法总结(8)-函数式编程_for循环

如果使用map函数实现,map函数可以将被传入的函数作用到一个可迭代对象的每一个元素上,并且可返回包含了所有这些函数调用结果的一个列表,如下代码:

  •  
li = [1,2,3,4,5]def inc(x): return(x+10)print(list(map(inc, li)))
  • 1.
  • 1.
  • 1.
  • 1.

Python结果如下:

Python高级用法总结(8)-函数式编程_迭代_02

上面这个代码还可以进行改进,之前给大家介绍过lambda函数,还记得吗,它可以实现匿名函数,这一点与map的需求不谋而合。实际在这里显示定义inc函数没有必要,只需给map传一个lambda匿名函数即可:

  •  
li= [1,2,3,4,5]print(list(map((lambda x:x+10),li)))
  • 1.
  • 1.

Python结果如下:

Python高级用法总结(8)-函数式编程_for循环_03

二、过滤器-Filter

filter函数可以实现选择可迭代对象中的元素,即实现相当于“过滤器”或“选择器”的功能。如下面代码实现过滤出列表中大于0的元素功能:

  •  
print(list(range(-5,5)))print(list(filter((lambda x: x>0),range(-5,5))))
  • 1.
  • 1.

如下图结果所示,filter函数可以实现过滤器的功能,过滤条件就是第一个参数所接收的函数。

当然也可以使用for循环加上if条件语句,实现同样过滤效果:

Python高级用法总结(8)-函数式编程_迭代_04

三、处理器-Reduce

  •  
from functools import reduceprint(reduce((lambda x,y:x+y),[1,2,3,4]))
  • 1.
  • 1.

 

Python高级用法总结(8)-函数式编程_函数式编程_05

 

 

版权声明
本文为[wx614070971eedb]所创,转载请带上原文链接,感谢
https://blog.51cto.com/u_15367641/3889310

  1. 面对小白的pandas命令手册+练习题【三万字详解】
  2. 面對小白的pandas命令手册+練習題【三萬字詳解】
  3. Face au Manuel de commande pandas de Xiaobai + question d'exercice [30 000 mots pour plus de détails]
  4. Interprétation des questions d'entrevue de base Python | 100 couches d'entrevue Python | couche 1
  5. Python data structure and algorithm (17) -- merge sort
  6. Les fonctions intégrées Python exécutent des blocs de code de fonction à travers des chaînes, et les mécanismes de réflexion comme Java sont assez puissants!
  7. Python笔记-uiautomator2截图点击,OpenCV找图
  8. Python文档阅读笔记-OpenCV中Template Matching
  9. Python笔记-利用OpenCV的matchTemplate屏幕找图并使用pyautogui点击
  10. Python筆記-利用OpenCV的matchTemplate屏幕找圖並使用pyautogui點擊
  11. Notes python - utilisez l'écran matchtemplate d'OpenCV pour trouver des images et cliquez sur
  12. Notes de lecture de documents python - Matching de modèles dans OpenCV
  13. Notes python - capture d'écran de l'automate 2 Cliquez pour ouvrir la vue
  14. python链接云服务器的mysql8
  15. python鏈接雲服務器的mysql8
  16. Mysql8 pour les serveurs Cloud liés Python
  17. Python资源大集合,要的话可以拿走!
  18. ️万字【Python基础】保姆式教学️,小白快速入门Python!
  19. ️萬字【Python基礎】保姆式教學️,小白快速入門Python!
  20. Wanzi [base Python] Baby - sitting Teaching, Little White Quick Start Python!
  21. Realizing the function of sending e-mail automatically with Python
  22. Smtpauthenticationerror in Python: solution
  23. 8 steps to teach you how to solve Sudoku in Python! (including source code)
  24. Python change la vie | identifier facilement des centaines de numéros de livraison
  25. Python change life | utilisation de modèles reconnus par ocr
  26. Bibliothèques Python utiles et intéressantes - - psutil
  27. 3. Traitement des données pandas
  28. 【Python编程基础】控制流之链式比较运算符
  29. MFC uses Python scripting language
  30. 【Python編程基礎】控制流之鏈式比較運算符
  31. 【 base de programmation python】 opérateur de comparaison de chaîne pour le flux de contrôle
  32. Python game development, pyGame module, python implementation of Xiaole games
  33. Mise en œuvre du Code de vérification unique (OTP) avec le cadre de repos Django
  34. Python - eval ()
  35. Python - Programmation orientée objet - _Rapport()
  36. Différence entre python - rep (), Str ()
  37. Python - Programmation orientée objet - _Appel()
  38. Python calling matlab script
  39. Python - Programmation orientée objet - _Nouveau() et mode Singleton
  40. Python - Programmation orientée objet - méthode magique (méthode de double soulignement)
  41. Python - Programmation orientée objet - pratique (6)
  42. Python - Programmation orientée objet - réflexion hasattr, GetAttr, GetAttr, delattr
  43. Python - Programmation orientée objet - _Dict
  44. Python - pydantic (2) Modèle imbriqué
  45. Non-ASCII character ‘\xe5‘ in file kf1.py on line 4, but no encoding declared; see http://python.or
  46. python笔记(一)
  47. Non - ASCII character 'xe5' in file kf1.py on Line 4, but no Encoding declared;Voirhttp://python.or
  48. Notes Python (1)
  49. Talk about how JMeter executes Python scripts concurrently
  50. In Beijing, you can't see the moon in the Mid Autumn Festival. Draw a blood red moon in Python
  51. Un des pandas crée un objet
  52. Machine learning | unitary regression model Python practical case
  53. Draw a "Lollipop chart" with Excel and python
  54. Python uses scikit learn to calculate TF-IDF
  55. Getting started with Python Basics_ 3 conditional statements and iterative loops
  56. Python dynamic properties and features
  57. 云计算开发:Python内置函数-min()函数详解
  58. [Python skill] how to speed up loop operation and numpy array operation
  59. 雲計算開發:Python內置函數-min()函數詳解
  60. Développement de l'informatique en nuage: explication détaillée de la fonction intégrée python - min ()