IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

sets et points (de python, pas de tennis)


Sujet :

Python

  1. #1
    Membre émérite
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Par défaut sets et points (de python, pas de tennis)
    Bonjour à tous,

    Je voudrais créer un ensemble (Set) de points, et je butte sur la structure à utiliser pour modéliser un point.

    Au début j'ai utilisé un tuple (x,y), mais je ne peut pas d'opération sur le point une fois qu'il est défini et cela est frustrant.

    Après j'ai essayé une liste [x, y], mais les listes ne sont pas des objets hashables (nécessaire pour les sets). les numarray non plus

    Quelle structure je pourrais bien utiliser ?

    a+

  2. #2
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    un objet, tout simplement?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class Point(object):
     
        def __init__(self, x=0, y=0):
            self.x = x
            self.y = y
    les listes ne sont pas des objets hashables (nécessaire pour les sets)
    Que veux-tu faire avec tes points? Pourquoi te faut-il des objets hashables?

  3. #3
    Membre émérite
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Par défaut
    En effet, cela devrait marcher, merci. C'est fou desfois on est tellement fixé sur un truc que les choses les plus simples vous échappent.

    J'aurai besoin de points hashables, car il faudrait que je modélise des clusters (sets) de points, je voudrais tester l'algo k-means.

  4. #4
    Membre émérite
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Par défaut
    ah oui mais en fait non. j'ai répondu sans réfléchir. je voudrais travailler avec des points d'une dimension quelconque, donc ce sera forcément une liste au final (meme si ell est dans un objet) ?! Comment je vais faire pour mettre ca dans un Set ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 52
    Par défaut
    Salut,

    Quand tu dis dimension quelconque, c'est limité à 1,2 et 3 ou alors à plus ?

    See++

  6. #6
    Membre émérite
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Par défaut
    quelconque, c'est 1,2 et 3, c'est bien connu

    nan au cas où t'aurai pas saisi l'ironie, je veut représenter un point de dimension dont la dimension est un entier naturel positif quelconque.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 52
    Par défaut
    Oui mais vu qu'en général on pense à point en 1D, 2D ou 3D, je me suis posé la question ...

    Sinon voici une petite soluce :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    class Point :
        def __init__(self,dim=0,coord=[]):
     
    	if dim=="0" and len(coord)==0 : raise "Ca va pas la tete"
     
    	if dim !=0 :
                self.dim=dim #pas complique
    	    self.liste=[0 for i in range(len(dim))]
    	else :
    	    self.dim=len(coord)
    	    self.liste=coord[:]
     
        def __getitem__(self,i):
            return self.liste[i]
     
        def getCoord(self,i) : 
            return self.liste[i]
     
     
    toto=Point(coord=[4,2,5,6])
    print toto[0]
    print toto.getCoor(2)
    C'est un truc du genre que tu veux faire ?

    See++

  8. #8
    Membre émérite
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Par défaut
    Oui, merci.

    En fait naivement j'ai pensé que puisque l'on ne pouvait pas hasher une liste, on ne pouvait pas hasher un objet contenant une liste... faux.

    du coup, un code aussi simple que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    from sets import Set
     
    class Point :
       def __init__(self,l):
           self.l = l
     
    p1 = Point([])
    set = Set()
    set.add(p1)
    ## deux fois
    set.add(p1)
     
    print set
    donnera bien le resultat attendu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set([<__main__.Point instance at 0x0189DDA0>])
    ##une seule instance comme prévu
    bon...
    merci et désolé pour la question stupide ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. SET SESSION max_allowed_packet n'a pas d'effet
    Par TiEuM dans le forum Administration
    Réponses: 2
    Dernier message: 02/06/2014, 16h13
  2. Réponses: 1
    Dernier message: 05/07/2010, 18h31
  3. Réponses: 5
    Dernier message: 04/02/2010, 21h56
  4. Réponses: 6
    Dernier message: 31/07/2007, 15h48
  5. [Plugi][phpeclipse] point d'arrêt pas pris en compte
    Par damjal dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 22/11/2005, 23h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo