0

(Python バージョン 2.6.5)

私は持っている:

 boxes_with_sizes_added = [\
 [0,0,0,1,1,1,0],\
 [785,500,200,787,502,202,1],\
 [400,500,600,404,504,604,2],\
 [100,200,300,108,208,308,3],\
 [50,60,70,51,61,71,0]\
 # several millions more...
 ]

...それらは次の形式のボックスです: [x1,y1,z1,x2,y2,z2,rel_size]

そして、私は「チョッピング」メソッドを持っています:

def cubic_breakdown(box,division_factor):
 if division_factor==1:
     return[box]
 elif division_factor>1:
     boxes_out=[]
     for k in range(division_factor):
         for j in range(division_factor):
             for i in range(division_factor):
                 boxes_out.append([\
                 (box[0]+((box[3]-box[0])/float(division_factor))*i),\
                 (box[1]+((box[4]-box[1])/float(division_factor))*j),\
                 (box[2]+((box[5]-box[2])/float(division_factor))*k),\
                 (box[0]+((box[3]-box[0])/float(division_factor))*(i+1)),\
                 (box[1]+((box[4]-box[1])/float(division_factor))*(j+1)),\
                 (box[2]+((box[5]-box[2])/float(division_factor))*(k+1)),\
                 box[6]\
                 ])
     return boxes_out

基本的に「ボックス」は「rel_size」に従って等分に「切り刻まれ」、リストに追加されます

 chopped_boxes=[]
 for box in boxes_with_sizes_added:
     for chopped_box in cubic_breakdown(box,2**box[6]):
         chopped_boxes.append(chopped_box)

しかし、あまりにも多くのボックスを処理しようとすると、特定の時点で「MemoryError」が発生します。何が問題ですか?リストまたはリスト出力をピクルする必要がありますか? 前もって感謝します!

4

1 に答える 1