簡體   English   中英

Python將列表划分為百分比

[英]Python divide list into percentages

我有一個函數,可以將隨機顏色應用於按百分比定義的每組元素。 在這種情況下,我有一個包含 154 個元素的列表,但不知何故最終我只得到了 152 個已處理的元素。 不知道為什么,因為我在最后調用函數時總共給了它 100%。

import maya.cmds as cmds
import random

def selector(percents):
    RandomSelection = []
    mySel = cmds.ls(sl=1) # a list of elements with a total of 154
    random.shuffle(mySel)
    
    start = 0
    for cur in percents:
        end = start + cur * len(mySel) // 100
        RandomSelection.append(mySel[start:end])
        start = end
    
    print(len(mySel)) # 154
    print ( sum( [ len(listElem) for listElem in RandomSelection]) ) # 152 # why not 154?
    
    for mesh in RandomSelection:
        r = [random.random() for i in range(3)]
        cmds.polyColorPerVertex(mesh,rgb=(r[0], r[1], r[2]), cdo=1 )
    

selector([70, 10, 15, 5])
#154
#152

謝謝你。

end = start + cur * len(mySel) // 100在每次迭代中最多可以刪除 1 個元素。

試試這個:

start = 0
cumul = 0
for cur in percents:
    cumul += cur
    end = cumul * len(mySel) // 100
    RandomSelection.append(mySel[start:end])
    start = end

由於花環,這仍然會在每次迭代中最多下降 1,但這些下降不會累積(因為你從新鮮重新計算你的end ),最后你保證有一個精確的划分,所以用完所有元素.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM