import numpy as np
import random
import itertools
import colorsys
hue, saturation, value = np.arange(0.0,1,0.05), np.arange(0.3,1.01,0.345), np.arange(0.3,1.01,0.345)
rlist= [colorsys.hsv_to_rgb(hue, saturation, value) for hue, saturation, value in
itertools.product(random.sample(hue,len(hue)), random.sample(saturation, len(saturation)), random.sample(value, len(value)))]
print rlist
編輯:random.sample從全人羣,以避免就地單獨洗牌
版本不itertools:
# without itertools
import numpy as np
import random
from pprint import pprint
import colorsys
hues, saturations, values = np.arange(0.0,1,0.05), np.arange(0.3,1.01,0.345), np.arange(0.3,1.01,0.345)
rlist= [colorsys.hsv_to_rgb(hue, saturation, value)
for hue in random.sample(hues,len(hues))
for saturation in random.sample(saturations, len(saturations))
for value in random.sample(values, len(values))]
pprint(rlist)
您還可以從文檔itertools.product的定義(我這樣做,在模塊調用在我的服務器it.py,並使用它,而不是itertools):
product = None
from itertools import *
if not product:
def product(*args, **kwds):
# product('ABCD', 'xy') --> Ax Ay Bx By Cx Cy Dx Dy
# product(range(2), repeat=3) --> 000 001 010 011 100 101 110 111
pools = map(tuple, args) * kwds.get('repeat', 1)
result = [[]]
for pool in pools:
result = [x+[y] for x in result for y in pool]
for prod in result:
yield tuple(prod)
我用itertools通常爲:
import itertools as it
但在服務器它是由
import it
而上述代碼的目的是生成一個半混洗的顏色值列表? – jball 2010-10-19 19:27:37
是的。這是正確的,至少在這一部分。 – relima 2010-10-19 19:32:09
有意義的變量名稱? – 2010-10-19 19:32:44