有没有办法获取向量的每个 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]
另请参阅:
有什么巧妙的方法可以获取向量的每个 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]
另请参阅: