小编Ecu*_*ene的帖子

如何将两个 Rust 向量交织成一个新向量?

我需要一种惯用的方式来交错这两个向量:

v1 = vec![1.0, 2.0, 3.0];
v2 = vec![4.0, 5.0, 6.0];
Run Code Online (Sandbox Code Playgroud)

我期望的输出是:

v3 is [1.0, 4.0, 2.0, 5.0, 3.0, 6.0];
Run Code Online (Sandbox Code Playgroud)

我尝试使用 itertool 的interlace函数,但无法将迭代器收集到Vec类型。很可能我用错了它们。

iterator vector traits python-itertools rust

2
推荐指数
1
解决办法
210
查看次数

我如何将两个 Rust 向量按三组块交织成一个新向量?

我需要一种惯用的方式来交错这两个向量:

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];
Run Code Online (Sandbox Code Playgroud)

我期望的输出是:

[1.0, 2.0, 3.0,
 7.0, 8.0, 9.0,
 4.0, 5.0, 6.0,
 10.0, 11.0, 12.0];
Run Code Online (Sandbox Code Playgroud)

我使用了 itertoolschunks方法,但我不相信这是最好的实现,因为有两个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>>();
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来使用 itertools 编写这个迭代器?

vector python-itertools rust interleave

1
推荐指数
2
解决办法
589
查看次数

标签 统计

python-itertools ×2

rust ×2

vector ×2

interleave ×1

iterator ×1

traits ×1