Comprehension liste avec condition

Résolu
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

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    bonjour,
    moi je ferais ainsi:
    L=[l for l in lst if f(l)]
    1. Contributeur
      ou bien:
      L=list(filter(f,lst))
    2. 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
    3. Encore merci pour tous ces conseils très utiles
  2. J'ai trouvé une alternative dans cette article
    https://www.codeflow.site/fr/article/python-lambda

    Au chapitre parlant de la fonction
    filter
    .

    1. 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)))