亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

python中多種顏色之間的顏色列表

python中多種顏色之間的顏色列表

慕村225694 2021-10-12 17:44:23
對于我的項目,我需要使用用戶定義的顏色數顯示從 min 到 max 的變量值。這個用戶定義的變量(numberOfLevels) 是 5 (5,10,15,20,25,...) 的乘法。但是,這并不容易,因為最終的調色板是多種顏色之間的顏色范圍。所以我有一個包含 5 種初始顏色的調色板,我想將其轉換為具有 40 種顏色的調色板,其中顏色平均分為 5 種初始顏色。這是初始調色板的示例paletteList = [[Color("#ff0000"),Color("#ff8000"),Color("#ffff00"),Color("#00ffff"),Color("#0000ff")],]這是我制作的最終調色板的公式numberOfLevels = 40sizeOfBucket = int(numberOfLevels / 5)for x in range(0, len(paletteList[0])-1 ):    templist = list(paletteList[0][x].range_to(paletteList[0][x+1],sizeOfBucket+1))    for m in templist:    res.append(m)去除重復的顏色for m in res:    if m not in templist:           templist.append(m)這段代碼的問題是它顯示了 36 種顏色,而我要求顯示 40 種顏色
查看完整描述

1 回答

?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

問題是您使用的sizeOfBucket+1是 8+1 = 9 并且您正在range()從 0 到 5-1運行,這意味著 range(0, 4) 將運行 4 次,因此您有 9*4 = 36 點。


相反,您應該執行以下操作以獲得 40 種顏色:運行rangeasrange(0, len(paletteList[0]))這意味著range(0, 5)(0, 1, 2, 3, 4 所以總共 5 次) 并且range_to應該使用sizeOfBucketwhich 是 8. 所以現在你將有 8*5 = 40 種顏色。


numberOfLevels = 40

sizeOfBucket = int(numberOfLevels / 4)


for x in range(0, len(paletteList[0])-1 ):

    templist = list(paletteList[0][x].range_to(paletteList[0][x+1],sizeOfBucket))

    for m in templist:

        res.append(m)

編輯 2


numberOfLevels = 40

sizeOfBucket = int(numberOfLevels / 4)


for x in range(0, len(paletteList[0])-1):

    if 0<x<len(paletteList[0])-2:

        templist = list(paletteList[0][x].range_to(paletteList[0][x+1],sizeOfBucket+1))

    else:

        templist = list(paletteList[0][x].range_to(paletteList[0][x+1],sizeOfBucket))

    for m in templist:

        res.append(m)


查看完整回答
反對 回復 2021-10-12
  • 1 回答
  • 0 關注
  • 388 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號