我想实现以下目标
示例
array[1,2,3,4,5,6,7,8,9,10,11,12]
和integer i
。每次我想从这个数组中获得一个 i-length 子数组。 If i=3
预期/必需输出 第一次得到一个子阵列[1,2,3],第二次得到[4,5,6]。无论如何都要有效地做到这一点。
答案 0 :(得分: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)
移动到下一个切片。
答案 1 :(得分: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
)
)