Comprehension liste avec condition

Résolu
JFL -  
 JFL -
Bonjour,

Je n'arrive pas à finaliser ma liste avec une
lambda
. Le
if f == True
ne convient pas et je ne sais comment introduire la condition dans ma ligne de code. Pourriez-vous me donner un conseil ? D'avance merci.

def filtre(lst, f):
  L = [lst[i] for i in (range(len(lst))), if f == True]
  return L

filtre([12.5, 40, 42, 1.5, 50 , 60,1.2 ], lambda x : isinstance(x, int))

3 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    moi je ferais ainsi:
    L=[l for l in lst if f(l)]
    1
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      ou bien:
      L=list(filter(f,lst))
      1
    2. Utilisateur anonyme
       
      Bonjour

      Oui c’est ce que je cherchais à faire comprendre à JFL avec le lien vers l’article et la boucle détaillée en source d’inspiration
      0
    3. JFL
       
      Encore merci pour tous ces conseils très utiles
      0
  2. Utilisateur anonyme
     
    J'ai trouvé une alternative dans cette article
    https://www.codeflow.site/fr/article/python-lambda

    Au chapitre parlant de la fonction
    filter
    .

    0
    1. Utilisateur anonyme
       
      En s'inspirant de ça :
      def filtre(lst,f):
        L = []
        for i in (range(len(lst))):
            if f(lst[i]):
                L.append(lst[i])
        return L
      
      print(filtre([12.5, 40, 42, 1.5, 50 , 60,1.2 ], lambda x : isinstance(x, int)))
      0