ベクトルのすべてのn * i要素を取得する方法はありますか?

Jan 05 2021

n * iベクトルのすべての要素を取得する賢い方法はありますか?私はこのベクトルを持っています:

let example = vec![1, 2, 3, 4, 5, 6, 7, 8, 9];

このベクトルの3つおきの値が必要なので、出力は次のようになります。

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番目の値を返すイテレータ
  • 1秒おきに繰り返す方法