Maison > développement back-end > Tutoriel Python > Comment puis-je partitionner efficacement une liste en fonction d'une condition ?

Comment puis-je partitionner efficacement une liste en fonction d'une condition ?

Barbara Streisand
Libérer: 2024-12-13 16:23:20
original
396 Les gens l'ont consulté

How Can I Efficiently Partition a List Based on a Condition?

Partitionnement de listes en fonction de conditions

Lors de la division d'une liste en deux en fonction d'une condition donnée, il est tentant de parcourir la liste deux fois, créer deux nouvelles listes comme suit :

good = [x for x in mylist if x in goodvals]
bad = [x for x in mylist if x not in goodvals]
Copier après la connexion

Cependant, cette approche nécessite deux itérations distinctes sur la liste, ce qui peut être inefficace. Pour améliorer les performances, pensez à utiliser une itération manuelle avec ajout conditionnel :

good, bad = [], []
for x in mylist:
    (bad, good)[x in goodvals].append(x)
Copier après la connexion

Dans ce code :

  • On initialise deux listes vides, bonnes et mauvaises, pour stocker les éléments partitionnés .
  • On parcourt les éléments de mylist.
  • Pour chaque élément x, on utilise l'expression (mauvais, good)[x in goodvals] pour sélectionner la liste appropriée en fonction de la condition x dans goodvals.
  • Cette expression est évaluée comme mauvaise si x ne remplit pas la condition et comme bonne dans le cas contraire.
  • Nous ajoutons x à la liste sélectionnée à l'aide de la méthode append.

Cette approche évite le besoin de deux itérations distinctes, améliorant les performances en réduisant le nombre de parcours de liste de deux contre un. Il est également considéré comme plus élégant, car il capture la logique de partitionnement de manière concise et lisible.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal