Y at-il une meilleure façon de le faire:produit dans la gamme multiple en Python
perms = product(range(1,7),range(1,7),range(1,7))
afin que je puisse choisir le nombre de gammes j'utiliser? Je veux que ce soit équivalent à cela, mais évolutif.
def dice(num)
if num == 1:
perms = ((i,) for i in range(1,7))
elif num == 2:
perms = product(range(1,7),range(1,7))
elif num == 3:
perms = product(range(1,7),range(1,7),range(1,7))
#... and so on
mais je sais qu'il doit y avoir un meilleur moyen. Je l'utilise pour compter les résultats des dés. Le code réel
def dice(selection= lambda d: d[2]):
perms = itertools.product(range(1,7),range(1,7),range(1,7))
return collections.Counter(((selection(sorted(i)) for i in perms)))
où je peux l'appeler avec une variété de sélecteurs, comme sum(d[0:2])
pour la somme des 2 dés les plus bas ou d[1]
pour obtenir les dés du milieu.
ooh, bon appel, je ne savais pas à ce sujet. +1 –
Oh, comment ça m'a manqué? J'étais même sur cette page de doc. * facepalm * Merci –
Légèrement reliée: Y at-il une différence si vous utilisez 'irange'? Je suis dans le cas où mes gammes dans mon «produit» sont grandes. – Annan