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 :

Comment déclarer un array en python [Débutant(e)]


Sujet :

Python

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut Comment déclarer un array en python
    Bonjour,

    Je suis pas trop calé en Python et j'ai repris un code.
    Dans ce code, j'ai un variable qui contient un tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    polygon = [(46.369437240469,6.2395477294922),(46.386727813704,6.2587738037109),(46.413008467458,6.2055587768555),(46.397620431385,6.1818695068359),(46.369437240469,6.2395477294922)]
    Ce qui me trouble, c'est les parentèse.

    Je pense que ces parentèses sont pour dissocier les virgules parce que sans ces virgules, il n'y aurait pas 5 index, mais 10.

    ce qui me cause problème, c'est la suite.
    Je stoke dans ma base de donnée des geofences sous le format json.
    Quand j'extrait ces données, je les affiche et voici ce que ca donne

    Code PYTHON : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (id, devise_id, name, coordinates) in cursor:
    	print("ID:{}, Devise ID:{}, name:{}, coordinates:".format(
    		id, devise_id, name))
    	coords = json.loads(coordinates)
    	print coords[0]
    print coords[0], affiche
    [[46.369437240469, 6.2395477294922], [46.386727813704, 6.2587738037109], [46.413008467458, 6.2055587768555], [46.397620431385, 6.1818695068359], [46.369437240469, 6.2395477294922]]
    Le problème, c'est qu'au lieu de parentèse, j'ai des crochet.
    Es-ce que dans mon premier cas, j'ai uen chaine de caractere dans mon array polygon, alors que dans mon deuxième cas, j'ai des array dans mon array coods?

    Comment es-ce que je pourrais faire la conserion pour avoir ceci en partant de mon deuxième cas
    [(46.369437240469, 6.2395477294922), (46.386727813704, 6.2587738037109), (46.413008467458, 6.2055587768555), (46.397620431385, 6.1818695068359), (46.369437240469, 6.2395477294922)] [/QUOTE]

    Dans mon exercice, je dois passer polygon dans cette fonction
    Code PYTHON : 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
     
    point_in_poly(point_x,point_y,polygon)
    def point_in_poly(x,y,poly):
    	n = len(poly)
    	inside = False
    	p1x,p1y = poly[0]
    	for i in range(n+1):
    		p2x,p2y = poly[i % n]
    		if y > min(p1y,p2y):
    			if y <= max(p1y,p2y):
    				if x <= max(p1x,p2x):
    					if p1y != p2y:
    						xints = (y-p1y)*(p2x-p1x)/(p2y-p1y)+p1x
    					if p1x == p2x or x <= xints:
    						inside = not inside
    		p1x,p1y = p2x,p2y
     
    	return inside

    Es-ce coords passera aussi si je ne remplace pas les crochet par des parentèses?

    Merci pour votre aide
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Les parenthèses t'indiquent qu'ils s'agit de tuples et les crochets t'indiquent qu'ils s'agit de listes.

    Au vu du code de ta fonction ça ne semble pas avoir d'importance, mais tu aurais dû essayer.

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut
    Salut,
    Je te remercie pour ta réponse. Oui j'ai essayé et oui ca marche mais je voulais aussi comrendre.
    Mais quel est la différence entre une liste et un tuple et un array?
    Es-ce qu'en Python,il y a aussi la notion d'array ou on parle de liste au lieu d'array?
    Merci
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par pierrot10 Voir le message
    Je te remercie pour ta réponse. Oui j'ai essayé et oui ca marche mais je voulais aussi comrendre.
    Mais quel est la différence entre une liste et un tuple et un array?
    Es-ce qu'en Python,il y a aussi la notion d'array ou on parle de liste au lieu d'array?
    liste et tuple sont des types de base du langage qui permettent de construire des séquences/suite d'objets (éventuellement différents). La différence est que les listes sont "mutables", les tuples non.
    Mais tout cela est expliqué dans tout bon tuto..

    Les arrays tels que fabriquées avec le module array ou avec numpy sont d'une autre nature.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut
    D'accord, merci pour ces informations

    Je vais donc opter pour des listes car je dois modifier ces valeur.

    Je déclare donc my liste ainsi

    A ce moment je ne sais pas combien d'index il y aura, et ca peut changer au file du temps que le script tourne.

    Dans un fonction, je déclare wasInside comme global

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def callback(ch, method, properties, body):
        global wasInside
        ...
    Et dans cette fonction, je fais une request MySQL qui va me retourner l'ID d'un enregistrement

    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
    23
     
    wasInside = []
    def callback(ch, method, properties, body):
        global wasInside
     
        get_geofences = ("SELECT id, devise_id, name, coordinates FROM geofences WHERE devise_id = %s")
        try:
            cursor.execute(get_geofences, devise_id)
            db.commit()
        except:
            db.rollback()
     
        db.close()
     
        ## Loop the result
        for (id, devise_id, name, coordinates) in cursor:
            print("\r\nID:{}, Devise ID:{}, name:{}".format(
    	    id, devise_id, name))
    	coords = json.loads(coordinates)
    	polygon = coords[0]
            print polygon
            print wasInside[id]
            ....
    Et je recois ce message d'erreur:
    File "receive-new.py", line 160, in callback
    print wasInside[id]
    IndexError: list index out of range
    Ce qui, dans un sens, ne me surprend pas, car comme je le devinne, l'index qui est egal à la variable id, n'existe pas. Donc il ne trouve rien, et il affiche 'out of range'

    Suis-je bien juste?

    Si oui, es-ce qu'il y a une onction qui va controller si ca existe, et si non, créé le, un peu comme dans PHP ou l'on peut utilise isset().
    Une fois créé, je stoke une valeur.
    Et comment le supprimer, si la base de donnée ne contient pas d'ID egal à un index?

    Milles mercis pour vos lumières
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  6. #6
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut
    Es-ce que d'utilise un try pourrait une bonne solution ? (je ne suis pas convaincu)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    try:
        #wasInside[id]=False
        wasInside.index(id)
    except KeyError:
        wasInside[id:id] =False #ou True
    else:
        #"Do something
     
    print(wasInside)
    Si la direction est bonne, que va-til se passer si id change de valeur, sachant qu'il exister si il existe dans las base de donnée
    (suis pas pro en Python...)

    Au final je dois avoir une truc du genre
    155 False
    145 False
    100 False
    345 False
    et qui pourrait devenir/modifier ainsi
    155 Ture
    145 False
    100 True
    255 False
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par pierrot10 Voir le message
    Si la direction est bonne, que va-til se passer si id change de valeur, sachant qu'il exister si il existe dans las base de donnée
    (suis pas pro en Python...)
    Si vous aviez pris la peine d'ouvrir n'importe quel tuto. vous sauriez qu'un dict serait bien plus adapté.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. [WSDL] Comment déclarer un array d'objet
    Par Seb19 dans le forum Services Web
    Réponses: 2
    Dernier message: 05/12/2011, 12h34
  2. Réponses: 5
    Dernier message: 20/09/2005, 22h48
  3. Comment utiliser un array of TImage ?
    Par poussinphp dans le forum Langage
    Réponses: 23
    Dernier message: 19/09/2005, 09h24
  4. [Property] Comment déclarer une chaine par defaut ?
    Par Clorish dans le forum Composants VCL
    Réponses: 8
    Dernier message: 07/09/2004, 22h11
  5. Comment déclarer une DataSource dans server.xml
    Par guillaume06 dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 16/06/2004, 14h27

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