2016-09-22 59 views
0

分割的陣列我想實現以下事情如何以恆定的大小在python

array[1,2,3,4,5,6,7,8,9,10,11,12] 

integer i。每次我想從這個數組中獲得一個長度爲的子數組。 If i=3

預期/所需的輸出: 得到一個子陣列[1,2,3]在第一次,在第二時間,我得到[4,5,6]。無論如何要有效地做到這一點。

回答

0

試試這個發生器:

def slice_generator(a, i): 
    ind =[[j+l for l in range(i)] for j in a[::i][0:-1]] 
    for s in ind: 
     yield [a[k] for k in s] 

測試:

a = range(10) 
i = 3 
# create 
a_slice_generator = slice_generator(a,i) 
# iterate 
for slice in a_slice_generator: 
    print slice 

結果:

[0, 1, 2] 
[3, 4, 5] 
[6, 7, 8] 

您也可以next(a_slice_generator)移動到下一個片。

0

嘗試這個

使用array_chunk

$input_array = array(1,2,3,4,5,6,7,8,9,10,11,12); 
print_r(array_chunk($input_array, 3)); 

輸出

Array 
(
    [0] => Array 
     (
      [0] => 1 
      [1] => 2 
      [2] => 3 
     ) 

    [1] => Array 
     (
      [0] => 4 
      [1] => 5 
      [2] => 6 
     ) 

    [2] => Array 
     (
      [0] => 7 
      [1] => 8 
      [2] => 9 
     ) 
    [3] => Array 
     (
      [0] => 10 

     ) 


)