Pouvoir utiliser une fonction à 2 arguments pour trier une liste avec "sort"
Bonjour ! :)
Je suis actuellement sur un projet pour mes études d'informatique. Le projet consiste de trier une liste de points (x, y) (avec les x et y positif et entier) et de les comparer pour garder un maximum de points qui possèdent une distance supérieur à un diamètre donné ("r").
J'ai donc trié la liste avec les x croissant puis en renversant une copie de la liste initial
Code:
1 2 3 4 5 6
| l1.sort( key = operator.itemgetter(0) )
l2 = list(l1)
l1 = traitementPoints(l1, r)
l2.reverse()
l2 = traitementPoints(l2, r) |
Puis j'ai fais la même chose mais cette fois pour les y en remplacant "operator.itemgetter(0)" par "operator.itemgetter(1)"
Jusque là tout va bien ^^
A présent je voulais trier la liste grâce au produit scalaire, j'ai créé cette fonction :
Code:
1 2
| def produitScalaire(u, v):
return u[0]*v[0] + u[1]*v[1] |
Mais là où je n'arrive pas à trouver de réponse sur internet c'est pour le passage de la fonction sur la fonction "sort()"
J'ai donc essayer d'écrire (avec (3,2) un vecteur de référence) :
Code:
1 2
| l.sort( key = lambda x: produitScalaire( (3, 2), x ) )
print(l) |
Code:
1 2
| l.sort( key = produitScalaire( (3, 2) ) )
print(l) |
Mais j'ai toujours cette erreur :
Code:
1 2 3
| "print(l)
^
SyntaxError: invalid syntax" |
Je vous remercie d'avance pour votre aide !
Je suis nouveau sur ce forum (qui est mon premier forum ^^), j'espère ne pas avoir fais de faux pas sur la création du sujet ou autre :(, sinon j'essayerai de les corriger ^^