我需要一个惯用的方法来交织这两个向量:
let v1 = vec![1.0, 2.0, 3.0, 4.0, 5.0, 6.0];
let v2 = vec![7.0, 8.0, 9.0, 10.0, 11.0, 12.0];
我期望的输出是:
[1.0, 2.0, 3.0,
7.0, 8.0, 9.0,
4.0, 5.0, 6.0,
10.0, 11.0, 12.0];
我使用了itertools chunks
方法,但我不认为这是最好的实现,因为有两个collect
调用。
let output = interleave(&v1.into_iter().chunks(3), &v2.into_iter().chunks(3)).map(|v| {v.into_iter().collect::<Vec<f32>>()}).flatten().collect::<Vec<f32>>();
有没有更好的方法来使用itertools编写这个迭代器?
2条答案
按热度按时间bvhaajcl1#
似乎仅使用STD即可实现相同效果:
也就是说,
zip -> chain
的作用就像interleave
一样。r1zk6ea12#
您需要
Iterator::flatten
: