Czy istnieje sposób, aby uzyskać każdy element n * i wektora?
Jan 05 2021
Czy istnieje sprytny sposób na uzyskanie każdego n * i
elementu wektora? Mam ten wektor:
let example = vec![1, 2, 3, 4, 5, 6, 7, 8, 9];
Chcę co trzecią wartość tego wektora, więc wynik będzie:
let result = vec![3, 6, 9];
Wiem, że mogę to osiągnąć za pomocą pętli 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());
}
}
Odpowiedzi
1 kmdreko Jan 05 2021 at 04:07
Aby iterować po każdym n- tym elemencie, użyj .step_by(). Jednak używając tego zaczyna się od wartości początkowej, musisz .skip()również łączyć. plac zabaw :
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]
Zobacz też:
- Iterator, który zwraca każdą N-tą wartość
- Jak iterować po każdej drugiej liczbie