有没有什么聪明的方法可以让每一个 n * i
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()); } }
迭代 .step_by() . 但是,使用从初始值开始的值,您需要 .skip() playground :
.step_by()
.skip()
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]