Apakah ada cara untuk mendapatkan setiap elemen n * i dari sebuah vektor?
Adakah cara cerdas untuk mendapatkan setiap n * i
elemen vektor? Saya memiliki vektor ini:
let example = vec![1, 2, 3, 4, 5, 6, 7, 8, 9];
Saya ingin setiap nilai ketiga dari vektor ini, jadi hasilnya adalah:
let result = vec![3, 6, 9];
Saya tahu bahwa saya dapat mencapai ini dengan for loop:
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());
}
}
Jawaban
1 kmdreko
Untuk mengulangi setiap elemen ke n , gunakan .step_by(). Namun, menggunakannya dimulai dari nilai awal, Anda juga harus menghubungkannya .skip(). taman bermain :
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]
Lihat juga:
- Iterator yang mengembalikan setiap nilai ke-N
- Cara mengulang setiap angka detik
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan
Taylor Sheridan Baru Menambahkan 1 Bintang 'Yellowstone' Favoritnya ke Pemeran 'Lawmen: Bass Reeves'