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 :

Itération dans liste


Sujet :

Python

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 1
    Par défaut Itération dans liste
    Bonjour, je suis nouveau sur le forum. J'ai actuellement un problème sur python, je me base
    sur un dictionnaire qui contient 4 clés, je veux donc itérer ces 4 variables afin d'obtenir toutes les combinaisons possibles.
    Cependant je veux retirer les cas où les deux variables sont les mêmes et aussi les cas (i,j) et (j,i) qui sont les mêmes pour moi.

    Je pensais avoir trouvé une solution cependant il me manque à chaque fois une valeur j'en ai 5 au lien d'en avoir 6.
    (P1-P2)(P1-P3)(P1-P4)(P2-P3)(P2-P4)(P3-P4)

    Je vous mets le code:

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    import pickle
    import os
    from math import *
    from numpy import *
    from tkinter import *
    from Dictionnaire_base_de_donnees import *
    from itertools import filterfalse
    import timeit
     
    pos={"P1":{"position":array([0,0,0]),"rayon primitif":23.75},
         "P2":{"position":array([0,-131.25,0]),"rayon primitif" : 107.5},
         "P3":{"position":array([73,-131.25,0]),"rayon primitif":23.8},
         "P4":{"position":array([73,-51.8,0]),"rayon primitif":103.25}}
     
    dico={}
    liste=[element for element in pos.keys()]
    for i in liste:
        filtre = lambda j : j==i
        liste2 = list(filterfalse(filtre,liste))
        print(liste2)
        liste.remove(i)
        for j in liste2:
            if pos[i]["position"][0] == pos[j]["position"][0] and pos[i]["position"][1] == pos[j]["position"][1]:
                axe_normal = "un degré de liberté selon z"
                if pos[i]["position"][2] + pos[i]["rayon primitif"] == abs(pos[j]["position"][2]) - pos[j]["rayon primitif"]:
                    engrene = True
                else:
                    engrene = False
            elif pos[i]["position"][1] == pos[j]["position"][1] and pos[i]["position"][2] == pos[j]["position"][2]:
                axe_normal = "un degré de liberté selon x"
                if pos[i]["position"][0] + pos[i]["rayon primitif"] == abs(pos[j]["position"][0]) - pos[j]["rayon primitif"]:
                    engrene = True
                else:
                    engrene = False
            elif pos[i]["position"][0] == pos[j]["position"][0] and pos[i]["position"][2] == pos[j]["position"][2]:
                axe_normal = "un degré de liberté selon y"
                if pos[i]["position"][1] + pos[i]["rayon primitif"] == abs(pos[j]["position"][1]) - pos[j]["rayon primitif"]:
                    engrene = True
                else:
                    engrene = False
            else:
                engrene = False
            dico[(i,j)] = engrene
     
    print(dico)

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Par défaut
    Bonjour Wouldyoulike,

    pour construire tes combinaisons, tu peux essayer ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def comb(l):
        res =[]
        for i,p1 in enumerate(l):
            for p2 in l[i+1:]:
                res.append((p1,p2))
        return res
     
    pos=["P1","P2","P3","P4"]
    print(pos)
    print(comb(pos))
    A partir d'une liste, ca te retourne une liste de couples combinaisons des éléments de la liste en parametre.
    A toi ensuite de ne conserver que les couples qui t'intéressent.
    Pour cela, il te faudrait une méthode 'engrene' qui à partir de 2 entrée te retourne vrai ou faux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def engrene(p1, p2):
      <ton code qui vérifie ce qu'il faut>
     return true/false

Discussions similaires

  1. Itération dans une liste
    Par whorian dans le forum VB.NET
    Réponses: 5
    Dernier message: 01/04/2009, 16h04
  2. itération dans plusieurs listes
    Par dlewin dans le forum Général Python
    Réponses: 4
    Dernier message: 25/04/2008, 09h40
  3. ajout dans liste (syntaxe SQL)
    Par dr_feelgood dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 20/10/2005, 20h05
  4. [HTML] saut de ligne dans liste à puce.
    Par spirou dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 24/08/2005, 20h07
  5. Ajout entier dans liste
    Par goutbouyo dans le forum Windows
    Réponses: 3
    Dernier message: 20/08/2004, 21h54

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