0
votes

Valeurs de retour d'une expression Lambda

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. xxx

Lorsque j'exécute cette sortie, la sortie est une liste des éléments suivants: xxx

Je veux ajouter la liste avec la valeur de la valeur de la valeur p lorsque t <1 et 0 si t > 1.


0 commentaires

4 Réponses :


5
votes

Non Lambda Code> Nécessaire du tout:

lst.append((lambda: p if T < 1 else 0)())


0 commentaires

2
votes

Une solution alternative serait de considérer la compréhension de la liste pour créer votre liste finale lst . 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. XXX


0 commentaires

0
votes

Vous n'avez pas besoin de l'expression Lambda.

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 Lambda T: , 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.


0 commentaires

1
votes

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()


0 commentaires