¿Hay alguna forma de obtener todos los elementos n * i de un vector?
¿Existe alguna forma inteligente de obtener todos los n * i
elementos de un vector? Tengo este vector:
let example = vec![1, 2, 3, 4, 5, 6, 7, 8, 9];
Quiero cada tercer valor de este vector, por lo que la salida será:
let result = vec![3, 6, 9];
Sé que puedo lograr esto con un bucle 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());
}
}
Respuestas
1 kmdreko
Para iterar sobre cada n- ésimo elemento, use .step_by(). Sin embargo, al usar eso comienza en el valor inicial, también deberá encadenar .skip(). patio de recreo :
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]
Ver también:
- Iterador que devuelve cada valor Nth
- Cómo iterar cada segundo número