2017-07-26 4 views
0

Comprehension Quelqu'un peut-il simplifier la logique derrière ce morceau de code:Simplifying Liste Python

scores=[(similarity(prefs,person,other),other) 
for other in prefs if other!=person ] 

J'ai essayé la mise en œuvre comme cette

for others in prefs: 
    if others!=person: 
     scores=[similarity(prefs,person, others),others] 

Mais il ne capte que le dernier élément des autres. Btw prefs est un dictionnaire 2D et les partitions sont censées être une liste de tuples.

Répondre

5

Ce serait la même chose que de façon répétée avec des ajoute tuples à une liste:

scores = [] 
for others in prefs: 
    if others!=person: 
     scores.append((similarity(prefs, person, others), others)) 
+0

Oh merci Correcte un lot. Ça fonctionne bien. Je me demande pourquoi deux parenthèses appliquées ici font la différence. Quand je l'essaie avec une paire de parenthèses pour la fonction d'ajout, cela me donne un TypeError. –

+0

@ShonAufdaded Les parenthèses regroupent la valeur de retour de l'appel de fonction et 'other' sous la forme d'un tuple, sinon l'expression peut être considérée comme ambiguë. –