Générer une liste d'élément [Fermé]

Signaler
-
heyquem
Messages postés
759
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
29 décembre 2013
-
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

Messages postés
759
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
29 décembre 2013
119
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