2017-08-04 68 views
2

我常常用颜色值randint的元组与此类似的如何在不重复代码的情况下定义randint的元组?

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

在我以为,必须有一个更好的方法 - 有?

+0

更好地以什么方式? –

+0

您可以从'randrange(255),randrange(255),randrange(255)'开始。 –

+0

你可以使用一个生成器表达式,但是对于*只有3个变量*而言,它只是冗长而没有改进。 –

回答

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

为什么先创建一个全新的列表?只需用'(...)'替换'[...]'。 –

+1

此外,这只是增加认知负荷,这不是一个真正的改善。 –

+0

如果你打算这样做,你不妨使用一个生成器表达式... –

2

使用numpy?

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

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)] 

速度比较

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

100000循环,最好的3:每次循环5.31微秒

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

100000循环,最好的3:每次循环

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

6.96微秒100000个循环,最佳3个循环:每个循环4.58μs

相关问题