2017-08-04 2 views
2

Je reçois souvent d'utiliser tuples de randint pour la couleur des valeurs et telles queComment définir un tuple de randint sans répéter le code?

(a, b, c) = randint(0, 255), randint(0, 255), randint(0, 255) 

quand je pensais qu'il doit y avoir une meilleure façon - est là?

+0

Mieux de quelle manière? –

+0

Vous pouvez commencer par 'randrange (255), randrange (255), randrange (255)'. –

+0

Vous pouvez utiliser une expression de générateur, mais pour * seulement 3 variables * qui est tout aussi verbeux et donc pas d'amélioration. –

Répondre

1
a, b, c = [randint(0, 255) for _ in range(3)] 
+1

Pourquoi créer une toute nouvelle liste en premier? Il suffit de remplacer le [...] 'par' (...) '. –

+1

En outre, cela ne fait qu'ajouter de la charge cognitive, ce n'est pas vraiment une amélioration. –

+0

Si vous allez faire cela, vous pouvez aussi bien utiliser une expression de générateur ... –

2

En utilisant numpy?

import numpy as np 
tuple(np.random.randint(256, size=3)) 
# (222, 49, 14) 

multiples

import numpy as np 
n=3 
[tuple(i) for i in np.random.randint(256, size=(n,3))] # list 
# (tuple(i) for i in np.random.randint(256, size=(n,3))) # generator 
# [(4, 70, 3), (10, 231, 41), (141, 198, 105)] 

Vitesse comparaison

(randint(0, 255), randint(0, 255), randint(0, 255)) 

100000 boucles, le meilleur de 3: 5,31 us par boucle

tuple(random.randint(0, 255) for _ in range(3)) 

100000 boucles, les meilleurs de 3: 6,96 ps par boucle

tuple(np.random.randint(256, size=3)) 

100000 boucles, le meilleur de 3: 4,58 μs par boucle