2017-08-04 135 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

相關問題