我有一个包含10个元素的列表。我想将每个2个元素放在一个列表中。我该如何编写代码?
P = [1 2 3 4 5 6 7 8 9 10]
我想要的结果如下:
[[1 2] [3 4] [5 6] [7 8] [9 10]]
答案 0 :(得分:3)
......太多可能性......必须......抵抗......痒......手指......
>> P = [1 2 3 4 5 6 7 8 9 10];
>> P1 = reshape(P, 2,[])
>> P2 = P([1:2:end; 2:2:end])
>> P3 = mat2cell(P, 1, 2*ones(numel(P)/2,1))
>> P4 = zeros(2, numel(P)/2, class(P)); P4(:) = P
>> P5 = [P(1:2:end); P(2:2:end)]
>> P6 = accumarray([round(0.5:0.5:numel(P)/2)' repmat([1;2],numel(P)/2,1)], P)
>> P7 = cat(1 , P(1:2:end), P(2:2:end))
...宕。
答案 1 :(得分:1)
因为今天我很亲切,所以这里是如何通过重塑来实现的。
out = reshape(P,2,[])';
重新整形调用创建一个2×n的数组,其中元素分布(1,1),(2,1),(1,2)等。转置然后翻转行和列以产生所需的结果。