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 :

valeur aléatoire dans un boucle


Sujet :

Python

  1. #41
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 850
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 850
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par samirahal Voir le message
    une fonction pour faire tes comparaisons pour chaque tableau, stp tu peux me donner une piste j'arrive toujours pas à comparer une liste des tableaux un par un merci d'avance
    Bonjour, je voudrais comparer une pastèque...
    Ce qui se conçoit bien s'énonce clairement. On ne compare pas "un" truc ; ou alors on dit avec quoi on veut le comparer. Donc on compare (au minimum) "deux" trucs

    Donc comparer deux listes, c'est prendre un à un chaque élément dans la première liste et chaque élément dans la seconde liste et regarder s'ils sont égaux. Et si on trouve une différence, alors ils ne le sont définitivement pas.
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    >>> a=[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    >>> b=[list(x) for x in a]
    >>> a
    [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    >>> b
    [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    >>> for (x, y) in zip(a, b):
    ...     print(x, y, x==y)
    ... 
    [1, 2, 3] [1, 2, 3] True
    [4, 5, 6] [4, 5, 6] True
    [7, 8, 9] [7, 8, 9] True
     
    >>> for (x, y) in zip(a, b):
    ...     if x != y:
    ...             print("Ils sont inégaux")
    ...             break
    ... else: print("Ils sont égaux")
    ... 
    Ils sont égaux
     
     
    >>> b[1][1]="toto"
    >>> a
    [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    >>> b
    [[1, 2, 3], [4, 'toto', 6], [7, 8, 9]]
    >>> for (x, y) in zip(a, b):
    ...     print(x, y, x==y)
    ... 
    [1, 2, 3] [1, 2, 3] True
    [4, 5, 6] [4, 'toto', 6] False
    [7, 8, 9] [7, 8, 9] True
     
    >>> for (x, y) in zip(a, b):
    ...     if x != y:
    ...             print("Ils sont inégaux")
    ...             break
    ... else: print("Ils sont égaux")
    ... 
    Ils sont inégaux

    Ca c'est le principe général. Il se trouve toutefois que Python sait le faire tout seul (au moins pour ses propres tableaux)
    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
    >>> a
    [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    >>> b
    [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    >>> a==b
    True
     
    >>> b[1][1]="toto"
    >>> a
    [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    >>> b
    [[1, 2, 3], [4, 'toto', 6], [7, 8, 9]]
    >>> a==b
    False
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  2. #42
    Invité
    Invité(e)
    Par défaut
    Un autre exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    tableau_de_reference = [[0,1,2],\
                            [3,4,5],\
                            [6,7,8]]
     
    tableau_a_comparer = [[0,1,2],\
                          [3,4,55],\
                          [6,7,8]]
     
    tableau_de_comparaison = [[obj == tableau_de_reference[x][y] for y, obj in enumerate(row)] for x, row in enumerate(tableau_a_comparer)]
     
    print( '\n'.join(str(ligne) for ligne in tableau_de_comparaison) )
    [True, True, True]
    [True, True, False]
    [True, True, True]

  3. #43
    Membre actif
    Inscrit en
    Février 2010
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 52
    Par défaut
    Bonjour
    Un grand Merci pour Sve@r, LeNarvalo et wiztricks
    Maintenant j'arrive (grace à vos conseils et astuces de comparer deux listes), sauf que moi je veux
    1- génerer un tableau avec des grandes valeurs comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ++++++++ Big Tab++++++++
             val1  val2  val3  val4
    Bigtab1  7092  7805  3171     1
    2- génerer un nombre aléatoire de tableaux qui contient un nombre aléatoire des lignes comme suit:
    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
     
    ++++++++ Tab num: 1 ++++++++
                          val1  val2  val3  val4
    ligne1_tab1      10     6   19     0
    ligne2_tab1       5     6   19     0
     
    ++++++++ Tab num: 2 ++++++++
                        val1  val2  val3  val4
    ligne1_tab2    5     16    20     0
    ligne2_tab2    5     16    20     0
    ligne3_tab2    5     16    20     0
     
     
    ++++++++ Tab num: 3 ++++++++
                          val1  val2  val3  val4
    igne1_tab3      5     16    20     0
    ligne2_tab3     5     16    20     0
    jusqu'a ici tout est bon!
    maintenant je veux comparer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ++++++++ Big Tab++++++++
             val1  val2  val3  val4
    Bigtab1  7092  7805  3171     1
    à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ++++++++ Tab num: 1 ++++++++
                          val1  val2  val3  val4
    ligne1_tab1      10     6   19     0
    ligne2_tab1      5     6   19     0
    si les valeurs de "Big Tab" sont plus grandes alors de soustraire les valeurs de Tab num: 1 de Big Tab c a d : ( val1 de Bigtab1 - val1 de Tab num: 1), puis je stocke le resultat dans un nouveau tableau et je stoque tab1 dans un NewBigTab(qui va contenir les lignes) puis je fais la même opération pour ligne2_tab1, si je termine les ligne de tab1 je passe au lignes de tab 2 etc jusqu'a tab n ou bien les valeurs Big Tab deviennent null
    j'éspère que c'est clair maintenant !
    si vous trouver que c'est un problème simple , c'est hyper compliqué pour moi
    Merci d'avance

  4. #44
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 772
    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 772
    Par défaut
    Citation Envoyé par samirahal Voir le message
    si vous trouver que c'est un problème simple , c'est hyper compliqué pour moi
    A la base Python ne sait pas faire de choses compliquées: boucles, conditions,... que des opérations simples qu'on va pouvoir composer pour lui faire faire des choses plus intéressantes.
    Reprenez votre problème.

    Citation Envoyé par samirahal Voir le message
    si les valeurs de "Big Tab" sont plus grandes alors de soustraire les valeurs de Tab num: 1 de Big Tab c a d : ( val1 de Bigtab1 - val1 de Tab num: 1), puis je stocke le resultat dans un nouveau tableau et je stoque tab1 dans un NewBigTab(qui va contenir les lignes) puis je fais la même opération pour ligne2_tab1, si je termine les ligne de tab1 je passe au lignes de tab 2 etc jusqu'a tab n ou bien les valeurs Big Tab deviennent null
    Une variable V qui contient un nombre et une liste d'entiers L.
    Si L[0] est plus grand que V, on le retranche à V (et on stocke le résultat dans V) sinon on a terminé.
    Si V n'est pas nul, on recommence avec L[1]...

    La structure de cette boucle là sera la même que V et L contiennent des entiers ou des listes de listes. Ce qui va changer, ce sont des détails comme la comparaison de V à L[0] ou retrancher L[0] à V.
    On peut cacher ces détails dans des fonctions: comparer, retrancher,...
    Du coup, on a décomposé le problème en entités simples qu'on va pouvoir composer.

    Et voilà.

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

  5. #45
    Invité
    Invité(e)
    Par défaut
    Salut !

    Vu que je ne comprends pas trop ce que tu cherches à faire, des bouts de code potentiellement utile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import copy
    newBigTab = copy.deepcopy(bigTab) #Permet de créer une copie profonde d'un tableau avec une récursion maximale de 1000 par défaut si je dis pas de connerie

    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
    newBigTab = [[10,11,12],\
                [13,14,15],\
                [16,17,18]]
     
    tab1 = [[0,1,2],\
            [3,4,5],\
            [6,7,8]]
     
    for x, row in enumerate(tab1):
        for y, obj in enumerate(row):
            if newBigTab[x][y] > obj:
                newBigTab[x][y]-=obj
     
    newBigTab
    [[10, 10, 10], [10, 10, 10], [10, 10, 10]]

  6. #46
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 850
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 850
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par LeNarvalo Voir le message
    #Permet de créer une copie profonde d'un tableau avec une récursion maximale de 1000 par défaut si je dis pas de connerie
    J'aurais pensé comme toi mais au final non.

    J'ai en effet écrit ce code qui génère un tableau profond de n (déjà là il a fallu ruser car je ne voulais pas de récursif donc je suis passé par l'équivalent d'une pile sur le tableau lui-même).
    Puis il tente un deepcopy du tableau généré
    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
    19
    def makeTab(n):
    	t=[]
    	pile=t
    	for i in range(1, n+1):
    		pile.append(["toto %d" % i,])
    		pile=pile[-1]
    	# for
    	return t
    # makeTab()
     
    # Test fonction
    tab=makeTab(6)
    print(tab)
     
    # Test copie	
    tab=makeTab(497)
    from copy import *
    tab2=deepcopy(tab)
    print(id(tab) != id(tab2) and tab==tab2)
    Avec 497 ça passe, avec 498 ça passe plus.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #47
    Invité
    Invité(e)
    Par défaut
    510 ça passe 511 ça passe plus chez moi ! =)

    Drôle de façon de faire une tableau "profond" !

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/05/2011, 23h47
  2. Valeurs aléatoires dans un tableau C++
    Par 0nn2belle dans le forum C++
    Réponses: 6
    Dernier message: 10/02/2010, 13h13
  3. Recupérer des valeurs calculées dans une boucle
    Par Medoou dans le forum MATLAB
    Réponses: 40
    Dernier message: 23/07/2009, 14h12
  4. Prendre en compte une valeur insérée dans une boucle for
    Par SOPSOU dans le forum Intelligence artificielle
    Réponses: 6
    Dernier message: 08/07/2009, 16h20
  5. [BO 5] Valeur aléatoire dans un rapport
    Par LP-mpascolo dans le forum Designer
    Réponses: 27
    Dernier message: 10/12/2007, 14h58

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