Python Advanced use Summary (8) - functional Programming

Wx614070971eedb 2021-09-15 09:52:44
python advanced use summary functional


PythonPrise en charge hybride de plusieurs paradigmes de programmation,Pour la programmation fonctionnelle,PythonOffre un ensemble complet d'outils pour la programmation fonctionnelle,Par exemple:map、filterEtreduceAttendez..

Un.、Cartographie des fonctions sur des objets itérables-map

Comme la simple mise en œuvre d'une liste,Ajouter à chaque élément de la liste10.Peut être utilisé simplementfor.Boucle pour mettre à jour tous les chiffres d'une liste:

 

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

PythonLes résultats sont les suivants::

PythonRésumé de l'utilisation avancée(8)-Programmation fonctionnelle_forCycle

Si vous utilisezmapMise en œuvre de la fonction,map La fonction peut appliquer la fonction passée à chaque élément d'un objet itérable , Et vous pouvez retourner une liste contenant les résultats de tous ces appels de fonctions ,Le code suivant:

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

PythonLes résultats sont les suivants::

PythonRésumé de l'utilisation avancée(8)-Programmation fonctionnelle_Itération_02

Le code ci - dessus peut également être amélioré , Je vous ai déjà présenté lambdaFonctions,Tu te souviens?, Il peut implémenter des fonctions anonymes ,Ceci est lié àmap Les besoins coïncident . Afficher la définition ici inc La fonction n'est pas nécessaire , Il suffit de donner mapPasse - en un.lambda Une fonction anonyme suffit :

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

PythonLes résultats sont les suivants::

PythonRésumé de l'utilisation avancée(8)-Programmation fonctionnelle_forCycle_03

2.、Filtre-Filter

filter La fonction permet de sélectionner les éléments d'un objet itérable , C'est - à - dire que la mise en oeuvre équivaut à “Filtre”Ou“Sélecteur”La fonction de. Comme le code suivant implémente le filtrage de la liste supérieure à 0 Fonction de l'élément :

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

Comme le montre la figure ci - dessous ,filterFonctions La fonction de filtre peut être réalisée , La condition de filtrage est la fonction reçue par le premier paramètre .

Bien sûr, vous pouvez aussi utiliserfor Boucle plus ifDéclaration conditionnelle, Pour obtenir le même effet de filtrage :

PythonRésumé de l'utilisation avancée(8)-Programmation fonctionnelle_Itération_04

Trois、Processeur-Reduce

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

 

PythonRésumé de l'utilisation avancée(8)-Programmation fonctionnelle_Programmation fonctionnelle_05

 

 

版权声明
本文为[Wx614070971eedb]所创,转载请带上原文链接,感谢
https://javamana.com/2021/09/20210915095041125I.html

  1. L'arrivée de marchandises sèches, l'entretien d'emploi Java 12 grandes usines ont réussi à changer d'emploi,
  2. Multiple postures for handling container time in k8s environment
  3. Echarts remove left Gap, Blank
  4. Hotspot Weekly | zoom $100 million, docker fees, $38 billion Data bricks
  5. JsonMappingException: No serializer found for class org.apache.ibatis.executor.loader.javassist.JavassistProxyFactory...
  6. Java. Security. Securerandom source code analysis Java. Security. EGD = file: / dev /. / urandom
  7. When using IntelliJ idea, jump directly and quickly from the mapper interface to mapper.xml
  8. When idea writes SQL in mybatis XML, the solution to the problems of table name, field and red reporting
  9. Spring cloud integrates Nacos
  10. 应届毕业生Java笔试题目,2021大厂Java社招最全面试题,
  11. Liver explosion! Take you to understand Hadoop serialization
  12. linux系列之:告诉他,他根本不懂kill
  13. java版gRPC实战之三:服务端流
  14. RabbitMQ核心知识总结!
  15. linux系列之:告诉他,他根本不懂kill
  16. java版gRPC实战之三:服务端流
  17. RabbitMQ核心知识总结!
  18. 10天拿到字节跳动Java岗位offer,学习Java开发的步骤
  19. 10天拿到字节跳动Java岗位offer,Java知识点思维导图
  20. Résumé des connaissances de base de rabbitmq!
  21. 10天拿到字節跳動Java崗比特offer,Java知識點思維導圖
  22. 10 jours pour obtenir un Byte Jump Java post offer, Java Knowledge point Mind Map
  23. 10 jours pour obtenir l'octet Jump Java post offer, apprendre les étapes du développement Java
  24. Java version of gppc Reality Three: server side stream
  25. Linux Series: Dites - lui qu'il ne connaît pas kill du tout
  26. "Data structure and algorithm" of front end -- binary search
  27. 2020-2021京东Java面试真题解析,如何才能通过一线互联网公司面试
  28. 13 SpringBoot整合RocketMQ实现过滤消息-根据SQL表达式过滤消息
  29. 12 SpringBoot整合RocketMQ实现过滤消息-根据TAG方式过滤消息
  30. 11 SpringBoot整合RocketMQ实现事务消息
  31. 11 springboot Consolidated rocketmq Implementation transaction message
  32. 12 springboot Consolidated rocketmq Implements Filtering messages - Filtering messages according to tag method
  33. 13 springboot Consolidated rocketmq Implementation Filtering messages - Filtering messages according to SQL expressions
  34. linux系列之:告诉他,他根本不懂kill
  35. (1)java Spring Cloud+Spring boot企业快速开发架构之微服务是什么?它的优缺点有哪些?
  36. Oracle 检查 DATE 列 RANGE 分区表已有分区的最大日期时间
  37. ConcurrentHashMap--原理
  38. 2020 - 2021 JD Java interview Real question Analysis, How can interview through First - Line Internet Company
  39. Concurrenthashmap - - Principes
  40. Oracle vérifie l'heure de date maximale d'une partition existante dans la colonne date
  41. Docker Compose 实践及梳理
  42. Qu'est - ce qu'un microservice pour Java Spring Cloud + Spring Boot Enterprise Quick Development architecture?Quels sont ses avantages et ses inconvénients?
  43. Plus sign interview knowledge points in Java
  44. Pratique et organisation de la composition des dockers
  45. Linux Series: Dites - lui qu'il ne connaît pas kill du tout
  46. Convenient CSS and jQuery drop-down menu solution
  47. Linux analog packet loss rate
  48. Redis:我是如何与客户端进行通信的
  49. 15 useful cron work examples commonly used by Senior Linux system administrators
  50. 24个 JavaScript 循环遍历方法,你都知道吗?
  51. Reading notes of JavaScript advanced programming (3rd Edition) 4
  52. 30分钟学会Docker里面开启k8s(Kubernetes)登录仪表盘(图文讲解)
  53. 24 méthodes de traversée de boucle Javascript, vous savez?
  54. 30 minutes pour apprendre à ouvrir le tableau de bord k8s (kubernets) dans le docker (explication graphique)
  55. Redis: comment je communique avec les clients
  56. Wsl2: Windows native Linux subsystem
  57. 30分钟学会Docker里面开启k8s(Kubernetes)登录仪表盘(图文讲解)
  58. Python高级用法总结(8)-函数式编程
  59. 261页前端面试题宝典,JavaScript变量声明提升
  60. The performance of JVM and Java applications of the same version differs by 30% on X86 and aarch64 platforms. Why?