Comprehension liste avec condition

Résolu/Fermé
JFL - Modifié le 31 mars 2022 à 13:14
 JFL - 31 mars 2022 à 17:40
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

yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
31 mars 2022 à 10:30
bonjour,
moi je ferais ainsi:
L=[l for l in lst if f(l)]
1
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
31 mars 2022 à 10:33
ou bien:
L=list(filter(f,lst))
1
Whismeril Messages postés 19029 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 avril 2024 931
31 mars 2022 à 12:13
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
Encore merci pour tous ces conseils très utiles
0
Whismeril Messages postés 19029 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 avril 2024 931
Modifié le 31 mars 2022 à 13:15
J'ai trouvé une alternative dans cette article
https://www.codeflow.site/fr/article/python-lambda

Au chapitre parlant de la fonction
filter
.

0
Whismeril Messages postés 19029 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 26 avril 2024 931
Modifié le 31 mars 2022 à 13:15
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
Merci beaucoup.
0