Maison > développement back-end > Tutoriel Python > Programmation Python : d'excellentes façons d'éviter les boucles !

Programmation Python : d'excellentes façons d'éviter les boucles !

PHPz
Libérer: 2023-04-26 15:10:08
avant
1776 Les gens l'ont consulté

Nous savons que l'utilisation de boucles en Python est très lente, que devez-vous faire si vous êtes confronté à une situation similaire ?

不要在 Python 中使用循环,这些方法其实更棒!

Dans cet article, je partagerai avec vous des méthodes et des cas qui peuvent être utilisés pour remplacer les boucles Python :

  • Map
  • Filter
  • Reduce

Avant de commencer à utiliser les fonctions ci-dessus, si vous êtes Je ne suis pas familier avec les fonctions lambda, jetons-y un coup d'œil rapide.

Les fonctions Lambda sont une alternative aux fonctions régulières. Il peut être défini en une seule ligne de code et prend donc moins de temps et de place dans notre code. Par exemple, dans le code ci-dessous, nous pouvons voir la fonction lambda en action.

def multiply_by_2(x):
x*2
Copier après la connexion

fonction lambda

lambda x: x*2
Copier après la connexion

Remarque : il est préférable d'utiliser la fonction lambda au lieu de la fonction normale.

1. Map

En utilisant la fonction map, nous pouvons appliquer la fonction à chaque valeur de l'objet itérable (liste, tuple, etc.).

map(function, iterable)
Copier après la connexion

Supposons que nous voulions obtenir un nombre carré dans une liste (objet itérable). Nous allons d’abord créer une fonction square() pour trouver le carré d’un nombre.

def square(x):
return x*x
Copier après la connexion

Nous utiliserons ensuite la fonction map pour appliquer la fonction square() à la liste de nombres d'entrée.

input_list = [2, 3, 4, 5, 6]
# Without lambda 
result = map(square, input_list)
# Using lambda function 
result = map(lambda x: x*x, input_list)
# converting the numbers into a list
list(result)
# Output: [4, 9, 16, 25, 36]
Copier après la connexion

2. Filter

Intuitivement, la fonction de filtre est utilisée pour filtrer les valeurs des objets itérables (listes, tuples, ensembles, etc.). Les conditions de filtre sont définies dans la fonction transmise en paramètre à la fonction de filtre.

filter(function, iterable)
Copier après la connexion

Nous utiliserons la fonction de filtre pour filtrer les valeurs inférieures à 10.

def less_than_10(x):
if x < 10:
return x
Copier après la connexion

Nous utiliserons ensuite la fonction Filter pour appliquer la fonction less_than_10() à la liste de valeurs.

input_list = [2, 3, 4, 5, 10, 12, 14] 
# Without lambda
list(filter(less_than_10, input_list))
# using lambda function 
list(filter(lambda x: x < 10, input_list))
# Output: [2, 3, 4, 5]
Copier après la connexion

3. Réduire

La fonction Réduire est un peu différente des fonctions de carte et de filtre. Il est appliqué de manière itérative à toutes les valeurs de l'itérable et ne renvoie qu'une seule valeur.

Dans l'exemple ci-dessous, la liste des nombres est réduite en appliquant la fonction d'addition. Le résultat final sera la somme de tous les nombres de la liste, soit 15. 不要在 Python 中使用循环,这些方法其实更棒!Créons une fonction addition() qui ajoute deux nombres d'entrée.

def addition(x,y):
return x + y
Copier après la connexion

Ensuite, afin d'obtenir la somme de tous les nombres de la liste, nous appliquerons cette fonction d'addition comme argument à la fonction de réduction.

from functools import reduce
input_list = [1, 2, 3, 4, 5]
# Without Lambda function
reduce(addition, input_list))
# With Lambda function
reduce(lambda x,y: x+y, input_list))
# Output: 15
Copier après la connexion


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:51cto.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal