"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Entrée: comment puis-je partitionner efficacement une liste basée sur une condition? Sortie: comment répartir efficacement les listes en fonction des conditions?

Entrée: comment puis-je partitionner efficacement une liste basée sur une condition? Sortie: comment répartir efficacement les listes en fonction des conditions?

Publié le 2025-04-14
Parcourir:686

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

listes de partitionnement basées sur les conditions

lors de la division d'une liste en deux basées sur une condition donnée, il est tentant d'itérer la liste deux fois, créant 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]

Cependant, cette approche nécessite deux itérations distinctes sur la liste, ce qui peut être inefficace. Pour améliorer les performances, envisagez d'utiliser une itération manuelle avec une apprentissage conditionnelle:

good, bad = [], []
for x in mylist:
    (bad, good)[x in goodvals].append(x)

Dans ce code:

  • nous initialisons deux listes vides, bon et mauvais, pour stocker les éléments partitionnés. Goodvals] Pour sélectionner la liste appropriée en fonction de la condition x dans GoodVals.
  • Cette expression évalue à Bad si x ne répond pas à la condition et à bien autrement.
  • Nous annexons x à la liste sélectionnée en utilisant la méthode annexe. Il est également considéré comme plus élégant, car il capture la logique de partitionnement de manière concise et lisible.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3