C'è un modo per ottenere ogni elemento n * i di un vettore?
Esiste un modo intelligente per ottenere ogni n * i
elemento di un vettore? Ho questo vettore:
let example = vec![1, 2, 3, 4, 5, 6, 7, 8, 9];
Voglio ogni terzo valore di questo vettore, quindi l'output sarà:
let result = vec![3, 6, 9];
So che posso ottenere questo risultato con un ciclo 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());
}
}
Risposte
1 kmdreko
Per iterare su ogni n- esimo elemento, usa .step_by(). Tuttavia, utilizzando che inizia dal valore iniziale, dovrai anche concatenare .skip(). parco giochi :
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]
Guarda anche:
- Iteratore che restituisce ogni ennesimo valore
- Come eseguire l'iterazione su ogni secondo numero