有没有办法获取向量的每个 n * i 元素?

Is there a way to get every n * i element of a vector?

有什么巧妙的方法可以获取向量的每个 n * i 元素吗?我有这个向量:

let example = vec![1, 2, 3, 4, 5, 6, 7, 8, 9];

我想要这个向量的每三个值,所以输出将是:

let result = vec![3, 6, 9];

我知道我可以用 for 循环来实现:

let mut result: Vec<i32> = vec![];
let offset = 3;
for (index, value) in example.iter().enumerate() {
    if (index + 1) % offset == 0 {
        result.push(value.clone());
    }
}

要遍历每个 n 个元素,请使用 .step_by(). However, using that starts at the initial value, you'll need to chain .skip() as well. playground:

let example = vec![1, 2, 3, 4, 5, 6, 7, 8, 9];
let n = 3;
let result: Vec<_> = example.iter().skip(n-1).step_by(n).copied().collect();
println!("{:?}", result);
[3, 6, 9]

另请参阅: