Générer une liste d'élément

bilaiz -  
heyquem Messages postés 808 Statut Membre -
Bonjour,

L'idée c'est de générer une liste d'élément dont ceux ci se nomme Minicarre xyz et dont les valeurs en x varient entre 2 et 6, en y entre 2 et 8 et en z entre 0 et 2. Comment puis-je faire?

x=random.randint (2,7)
y=random.randint (2,9)
z=random.randint (0,3)
element_delete_liste1 = "(Minicarre {0}x {1}y {2}z)".format(x,y,z)
print (element_delete_liste1)

Quand je fais ceci, j'obtiens juste un élément des 105 éléments souhaité.

L'objectif désiré est une liste d'élément donnant quelque chose comme ceci:

(Minicarre 0x, 0y,0z), (Minicarre 1x, 0y,0z), (Minicarre 2x, 0y,0z), (Minicarre 3x, 0y,0z),...
(Minicarre 0x, 1y,0z), (Minicarre 0x, 2y,0z), (Minicarre 0x, 3y,0z), (Minicarre 0x, 4y,0z),...
(Minicarre 0x, 0y,1z), (Minicarre 0x, 0y,2z), (Minicarre 0x, 0y,3z), (Minicarre 0x, 0y,4z),...
(Minicarre 1x, 1y,0z), (Minicarre 2x, 1y,0z), (Minicarre 3x, 1y,0z), (Minicarre 4x, 1y,0z),...
etc
etc
etc

En espérant que vous puissiez m'aider,
Merci d'avance

1 réponse

  1. heyquem Messages postés 808 Statut Membre 131
     
    Bonjour,

    Tu confonds
    randint()
    et
    range()
    .

    Note aussi que
    randint(2,7)
    délivre au hasard l'un des entiers 2,3,4,5,6,7,8,9 , c'est à dire que le 9 est compris comme valeur possible,
    contrairement à
    range(2,9)
    qui est
    [2, 3, 4, 5, 6, 7, 8]
    .

    NB:
    xrange() 
    est un générateur: il ne délivre ses élements que si on le sollicite avec la méthode
    next()
    ou par une boucle
    for
    .

    import random

    li = ["(Minicarre {0}x {1}y {2}z)".format(x,y,z)
    for x in xrange(2,7)
    for y in xrange(2,9)
    for z in xrange(0,3)]
    print li
    print len(li)

    random.shuffle(li)
    print
    print li

    L'instruction avec
    shuffle()
    est là pour montrer comment obtenir les éléments dans un désordre stochastique

    L'expression après li = est une list comprehension
    0