2016-09-22 56 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 

     ) 


)