Existe uma maneira de obter cada elemento n * i de um vetor?
Existe alguma maneira inteligente de obter todos os n * i
elementos de um vetor? Eu tenho este vetor:
let example = vec![1, 2, 3, 4, 5, 6, 7, 8, 9];
Eu quero cada terceiro valor desse vetor, então a saída será:
let result = vec![3, 6, 9];
Eu sei que posso conseguir isso com um loop 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());
}
}
Respostas
1 kmdreko
Para iterar sobre todos os n º elemento, uso .step_by(). No entanto, usando isso começa no valor inicial, você também precisará encadear .skip(). 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]
Veja também:
- Iterador que retorna cada enésimo valor
- Como iterar a cada segundo número
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino