ベクトルのすべてのn * i要素を取得する方法はありますか?
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
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秒おきに繰り返す方法