Je importe des valeurs à partir d'une base de données SQLITE et souhaitant exécuter une expression Lambda sur l'une des colonnes pour créer une liste. Lorsque j'exécute cette sortie, la sortie est une liste des éléments suivants: p> Je veux ajouter la liste avec la valeur de la valeur de la valeur p code> lorsque
t code> <1 et 0 si
t code>> 1. p> p> p>
4 Réponses :
Non Lambda Code> Nécessaire du tout:
lst.append((lambda: p if T < 1 else 0)())
Une solution alternative serait de considérer la compréhension de la liste forte> pour créer votre liste finale lst code>. De cette façon, vous pouvez également éviter l'utilisation de variables intermédiaires. Bien sûr, il s'agit simplement d'une doublure pour résoudre votre problème.
Vous n'avez pas besoin de l'expression Lambda. P>
Vous pouvez y penser comme ceci: Actuellement, vous dites à l'ordinateur d'annoncer la fonction elle-même à la liste; Vous ne dites pas à l'ordinateur d'annoncer l'évaluation de cette valeur. Si vous vous débarrassez du bit code> Lambda T: CODE>, vous effectuez essentiellement une déclaration en ligne qui évalue la valeur. Les fonctions Lambda sont utilisées pour définir des fonctions unique à utiliser ultérieurement. P>
Vous avez déjà 2 bonnes réponses, donc je vais suggérer une autre approche. Cela peut être résolu sur le niveau de requête, en supposant que vous ne sélectionnez que ces 2 colonnes avec la logique que vous avez montrée.
Cela a le potentiel de meilleure performance s'il y a beaucoup de lignes dans la table: P>
cur.execute('SELECT CASE WHEN T < 1 THEN p WHEN T > 1 THEN 0 END FROM W') data = cur.fetchall()