Есть ли способ получить каждый элемент вектора n * i?
Jan 05 2021
Есть ли какой-нибудь умный способ получить каждый 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());
}
}
Ответы
1 kmdreko Jan 05 2021 at 04:07
Чтобы перебрать каждый n- й элемент, используйте .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]
Смотрите также:
- Итератор, возвращающий каждое N-е значение
- Как перебирать каждое второе число